先通过ui界面实现基本框架
接下来就要实现每个按键的功能了
我们先来实现新建的的功能,我们右键新建键,可以发现没有转到槽的功能,因此我们要自己写connect来建立关系。
private slots:
void newActionSlot();
在.h文件中加上槽函数。
connect(ui->action_N,&QAction::triggered,this,&MainWindow::newActionSlot);
然后再.cpp的构造函数中加上connect函数,&QAction::triggered就是被单击的信号。
建立联系之后我们就可以实现newActionSlot()这个函数。
void MainWindow::newActionSlot()
{
ui->textEdit->clear();
this->setWindowTitle("新建文本文档.txt");
}
我们使用了clear清空原本的内容,然后重新给窗口名取别名。这样一来新建键的功能实现了。
接下来实现打开键。
void openActionSlot();
?老样子,在.h文件中加入此函数。
然后再.cpp中建立联系
connect(ui->action_O,&QAction::triggered,this,&MainWindow::openActionSlot);
实现void openActionSlot()
void MainWindow::openActionSlot()
{
QString filename= QFileDialog::getOpenFileName(this, "选择一个文件",
QCoreApplication::applicationFilePath(),//获取当前路径
"*.cpp");
if(filename.isEmpty())
{
QMessageBox::warning(this,"警告","请选择一个文件");
}
else
{
//qDebug()<<filename;//绝对路径
QFile file(filename);
file.open(QIODevice::ReadOnly);
QByteArray ba=file.readAll();
ui->textEdit->setText(QString(ba));
file.close();
}
}
?我们来一步一步解析。
QString filename= QFileDialog::getOpenFileName(this, "选择一个文件",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?QCoreApplication::applicationFilePath(),//获取当前路径
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "*.cpp");
这一行可以获取选择文件的绝对路径。
if(filename.isEmpty())
? ?{
? ? ? ?QMessageBox::warning(this,"警告","请选择一个文件");
? ?}
如果没有选择文件,回弹出窗口警告,加头文件QMessage。
?file.open(QIODevice::ReadOnly);以只读的方式打开文件
接下来我们实现另存为键
void saveActionSlot();
connect(ui->action_S,&QAction::triggered,this,&MainWindow::saveActionSlot);
void MainWindow::saveActionSlot()
{
QString filename=QFileDialog::getSaveFileName(this,"选择一个文件",
QCoreApplication::applicationFilePath());
if(filename.isEmpty())
{
QMessageBox::warning(this,"警告","请选择一个文件");
}
else
{
QFile file(filename);
file.open(QIODevice::WriteOnly);
// QByteArray ba;
// ba.append(ui->textEdit->toPlainText());
file.write(ui->textEdit->toPlainText().toUtf8().data());
file.close();
}
}
实现这个函数和上述步骤基本一致。
通过以上操作我们实现了基本功能,让我们一起来看看效果
点击打开键
没有选择文件
打开文件后,成功在textedit中显示
点击另存为键?