1.设置布局
1.1选择Text Edit点击垂直布局

1.2 输入文件(&F)

1.3补全文件

1.4补全菜单栏

按下SHIFT+ALT+R可以查看预览图

1.5menubar整个界面,menu菜单栏,action菜单栏下面的功能
将新建改成newAction,打开改成openAction,另存为改成saveAction

2.实现按钮功能
2.1实现newAction功能
(1) mainwindow.h
js
private slots:
void newActionSlot();
(2) mainwindow.cpp
js
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->newAction, &QAction::triggered, this, &MainWindow::newActionSlot);
}
void MainWindow::newActionSlot()
{
ui->textEdit->clear();
this->setWindowTitle("新建文本文档.txt");
}
(3) connect连接
参数 | 说明 |
---|---|
ui->newAction |
信号发送者(QAction 对象) |
&QAction::triggered |
信号(QAction 被点击时发出) |
this |
接收信号的对象(当前窗口) |
&MainWindow::newActionSlot |
槽函数(点击后执行的函数) |
(4) newActionSlot()槽函数
ui->textEdit
是界面上的一个文本框(由 Qt Designer 设计)。this
指代当前MainWindow
对象。
2.2实现openAction功能
(1) Qt文档

(2) Qt代码
js
QStringList files = QFileDialog::getOpenFileNames(
this,
"Select one or more files to open",
"/home",
"Images (*.png *.xpm *.jpg)");
(3) mainwindow.h
js
private slots:
void openActionSlot();
(4) mainwindow.cpp
js
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->openAction, &QAction::triggered, this, &MainWindow::openActionSlot);
}
void MainWindow::openActionSlot()
{
// 1. 弹出文件选择对话框,限定打开 `.cpp` 文件
QString fileName = QFileDialog::getOpenFileName(
this,
"打开",
QCoreApplication::applicationFilePath(),
"*.cpp"
);
// 2. 检查用户是否取消了文件选择
if (fileName.isEmpty()) {
QMessageBox::warning(this, "警告", "Please select a file");
}
// 3. 如果选择了文件,读取内容并显示在 textEdit 中
else {
QFile file(fileName); // 创建 QFile 对象
file.open(QIODevice::ReadOnly); // 以只读模式打开文件
QByteArray ba = file.readAll(); // 读取全部内容到 QByteArray
ui->textEdit->setText(QString(ba)); // 转为 QString 并显示在 textEdit
file.close(); // 关闭文件
}
}
(5) connect连接
参数 | 说明 |
---|---|
ui->openAction |
信号发送者(界面中的 QAction 对象) |
&QAction::triggered |
信号(当用户点击该动作时触发) |
this |
接收信号的对象(当前 MainWindow 窗口) |
&MainWindow::openActionSlot |
槽函数(点击后调用的函数) |
(6) 弹出文件选择对话框
使用 QFileDialog::getOpenFileName()
让用户选择文件。
参数说明:
this
:父窗口(当前窗口)。
"打开"
:对话框标题。
QCoreApplication::applicationFilePath()
:默认打开的目录(程序所在路径)。
"*.cpp"
:文件过滤器(仅显示 .cpp
文件)。
(7) 检查用户是否取消选择
如果 fileName.isEmpty()
为 true
,说明用户点了"取消",弹出警告提示。
(8) 读取文件并显示
使用 QFile
打开文件,读取全部内容到 QByteArray
。
将 QByteArray
转为 QString
,并设置到 ui->textEdit
显示。
2.3实现saveAction功能
(1) mainwindow.h
js
private slots:
void saveActionSlot();
(2) mainwindow.cpp
js
void MainWindow::saveActionSlot()
{
// 1. 弹出保存文件对话框
QString fileName = QFileDialog::getSaveFileName(
this,
"打开", // 对话框标题(建议改为"保存"更贴切)
QCoreApplication::applicationFilePath() // 默认保存路径(程序所在目录)
);
// 2. 检查用户是否取消保存
if (fileName.isEmpty()) {
QMessageBox::warning(this, "警告", "Please select a file");
}
// 3. 保存文件
else {
QFile file(fileName); // 创建文件对象
file.open(QIODevice::WriteOnly); // 以只写模式打开
QByteArray ba;
ba.append(ui->textEdit->toPlainText()); // 将文本框内容转为字节流
file.write(ba); // 写入文件
file.close(); // 关闭文件
}
}
(3)connect
函数
参数 | 说明 |
---|---|
ui->saveAction |
信号发送者(界面中的 QAction 对象) |
&QAction::triggered |
信号(用户点击时触发) |
this |
接收信号的对象(当前窗口) |
&MainWindow::saveActionSlot |
槽函数(点击后调用的保存逻辑) |
(4) 弹出保存对话框
QFileDialog::getSaveFileName()
让用户选择保存路径和文件名。
参数说明:
this
:父窗口。
"打开"
:建议改为 "保存"
更符合功能语义。
QCoreApplication::applicationFilePath()
:默认保存到程序所在目录。
(5) 检查用户是否取消
如果 fileName
为空(用户点了取消),弹出警告提示。
(6) 保存文件内容
将 textEdit
中的文本 (toPlainText()
) 转为 QByteArray
。
以二进制写入模式 (QIODevice::WriteOnly
) 保存到文件。