学习C++、QT---24(QT实现记事本项目的打开、保存、关闭)
每日一言
别怕失败,那些打不倒你的,终将让你更强大。
实现记事本的打开
我们给这个打开的按键都给转到槽,那么我们去实现槽函数
void Widget::on_openButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("file open"),
"E:/qianrushi/QT/QTcodeLesson",
tr("Text (*.txt *.doc)"));
this->setWindowTitle(fileName+"---MyNoteBook");
ui->textEdit->clear();
file.setFileName(fileName);
file.open(QIODevice::ReadOnly|QIODevice::Text);
QTextStream in(&file);
in.setCodec(ui->comboBox->currentText().toStdString().c_str());
while(!in.atEnd()){
QString context = in.readLine();
ui->textEdit->append(context);//追加到文本的末尾
}
}
很明显我们的槽函数就是写我们的文件选择框了因为点击这个打开按键后就是打开文件选择框,还有配合QFile和QTextStream进行读取文件并显示到textEdit上
实现记事本的保存
void Widget::on_saveButton_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("file save"),
"E:/qianrushi/QT/QTcodeLesson/untitled.txt",
tr("Text(*.txt *.doc *.docx)"));
this->setWindowTitle(fileName+"---MyNoteBook");
file.setFileName(fileName);
file.open(QIODevice::WriteOnly|QIODevice::Text);
QTextStream out(&file);
QString context =ui->textEdit->toPlainText();
out <<context;
}
我们发现一个问题
就是之前我将保存按键的那个编码也写死了,但是后面我做完项目回来,发现如果我保存后,切换编码的时候会出现程序卡死的状况,所以写完程序后需要将写死的编码删掉
为什么使用这个toplainText
toPlainText() | 返回纯文本,是最常用的获取文本内容的方法。 |
常用于文本的处理,就是将我们写的文本给全部捕获
然后我们用out<<context进行输出,写入到文件里面
实现记事本的关闭
void Widget::on_closeButton_clicked()
{
this->setWindowTitle("MyNoteBook");
if(file.isOpen()){
ui->textEdit->clear();//清屏
file.close();
}
ui->textEdit->clear();
}
很简单就是判断一下一个是如果文件是open的状态那么我们就先清屏,随后关闭文件,最后面还有一句这个clear是我为了我没有打开文件的时候,输入文本,当我点击这个关闭按钮的时候可以清屏