Qt的文件操作
本项目将实现一个类似
notepad的功能
- 新建
- 打开
- 保存
这里将选择的是
QMainWidow类
功能编写
1.准备
1. 创建一个ui界面,加入Txt Editor,编辑窗口信息xx(& x)

2. 导入库
#include <QFileDialog>
#include<QMessageBox>
#include <QDebug>
3. 编写connect()函数、定义槽函数


2.新建功能
void MainWindow::new_actionslot()
{
ui->textEdit->clear();
this->setWindowTitle("新建文本文档.txt");
}
3.打开功能
void MainWindow::open_actionslot()
{
QString filename = QFileDialog::getOpenFileName(this, "选择一个文件", QCoreApplication::applicationFilePath(), "All Files (*)");
if (filename.isEmpty())
{
QMessageBox::warning(this, "警告", "请选择一个文件");
}
else
{
QFile file(filename); // 用文件名初始化
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::warning(this, "错误", "无法打开文件");
return;
}
// 这里可以读取文件内容,比如:
QByteArray data = file.readAll();
ui->textEdit->setText(QString(data));
file.close();
}
}
4.保存功能
void MainWindow::save_actionslot()
{
QString filename=QFileDialog::getSaveFileName(this,"选择一个文件",QCoreApplication::applicationFilePath());
if(filename.isEmpty())
QMessageBox::warning(this,"错误","请选择一个文件");
else
{
QFile file(filename);
file.open(QIODevice::WriteOnly);
QByteArray data=(ui->textEdit->toPlainText()).toUtf8();
file.write(data);
file.close();
}
}
5.事件实现文件保存
在我们日常编辑文件时,通常会使用
Ctrl+S快捷键进行保存操作。那么在 Qt 中,如何实现这样的快捷键功能呢?在 Qt 中,鼠标点击、键盘按键等操作都被称为“事件”(Event),它们由 Qt 的事件系统统一处理。Qt 中所有控件类最终都继承自
QObject,并通过事件机制进行响应。如果我们希望捕获键盘快捷键,例如
Ctrl+S,可以通过,重写控件的虚函数keyPressEvent(),手动处理按键事件来实现
-
先在
mainwidow.h下声明一个虚函数,导入#include <QKeyEvent> -
再对虚函数进行重写
void MainWindow::keyPressEvent(QKeyEvent *event) { //确保两个按键同时按下 if (event->modifiers()==Qt::ControlModifier && event->key() == Qt::Key_S) { save_actionslot(); // 调用保存槽函数 } }
这就可以实现ctrl+s保存文件的功能啦。
3787

被折叠的 条评论
为什么被折叠?



