NoteBook三个功能初步实现
一、打开功能
有了前面对文件操作的学习,现在设置按钮的槽函数功能应该是非常容易了。
//“打开”按钮槽函数
void Widget::on_pushButton_open_clicked()
{
//选择需要打开的文件和文件的类型。(单个)
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"D:/c++QT/lessonDemo/noteBookProject",
tr("Text files (*.txt *.doc)"));
qDebug() <<fileName;
//打开下一个文件,把上一个文件内容覆盖清空。
ui->textEdit->clear();
//打开文本文件
file.setFileName("D:/c++QT/lessonDemo/noteBookProject/test.txt");
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
qDebug()<<"open error";
}
//读取
QTextStream in(&file);
in.setCodec("UTF-8");
//QString context = in.read(file.size());方法一:按照大小整个读
//方法二:如果没到尾部,一行一行的读。
while(!in.atEnd()){
QString context = in.readLine();
qDebug() << context;
//qDebug() << "=============";
//将文件内容显示到文本编辑框
//ui->textEdit->setText(context);
ui->textEdit->append(context);
}
//关闭
//file.close();
}
二、保存功能
//“保存”按钮槽函数
void Widget::on_pushButton_save_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"D:/c++QT/lessonDemo/noteBookProject/untitled.txt",
tr("Text (*.txt)"));
qDebug()<< fileName;
//写入文件
file.setFileName(fileName);
if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){
qDebug()<<"open error";
}
QTextStream out(&file);
out.setCodec("UTF-8");
//把内容从控件捕获,而不是简单的调试输出
QString context = ui->textEdit->toPlainText();
out << context ;
//file.close();
}
三、关闭功能
/*
“关闭”按钮槽函数。清空文本框内容
将其设置为整个类的成员数据,共享这个成员数据。不然关闭后就啥都没有
将QFile file设置为头文件中的公共属性;
*/
//头文件
public:
QFile file;//将QFile file设置为头文件中的公共属性;
Widget(QWidget *parent = nullptr);
~Widget();
void Widget::on_pushButton_close_clicked()
{
//isOpen。 file父类的父类实现的
if(file.isOpen()){
file.close();
ui->textEdit->clear();
}
}
点击关闭按钮,清空文本框内容
初步实现了三个功能,但还是有些小Bug。