用qt按以下要求编写mainwindow.h和mainwindow.cpp的代码并注释:建立一个以QMainWindow为窗口的项目Project_2。在Designer中,增加一个菜单File,并在其中加入三个菜单项:New, Save, Exit;进一步,在工具栏中放入上述三个菜单项对应的Action。在窗口中放入一个QPlainTextEdit部件 当单击New菜单时,清空QPlainTextEdit中的内容;当单击Save菜单时,把QPlainTextEdit中的内容保存到一个用户指定的文本文件中
时间: 2024-02-19 14:03:46 浏览: 193
mainwindow.h的代码如下:
```cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_actionNew_triggered();
void on_actionSave_triggered();
void on_actionExit_triggered();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
```
其中,MainWindow类继承自QMainWindow类,具有三个私有槽函数,分别响应New、Save和Exit菜单项的点击事件。
mainwindow.cpp的代码如下:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 将槽函数与菜单项的点击事件关联
connect(ui->actionNew, &QAction::triggered, this, &MainWindow::on_actionNew_triggered);
connect(ui->actionSave, &QAction::triggered, this, &MainWindow::on_actionSave_triggered);
connect(ui->actionExit, &QAction::triggered, this, &MainWindow::on_actionExit_triggered);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionNew_triggered()
{
ui->plainTextEdit->clear();
}
void MainWindow::on_actionSave_triggered()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "", tr("Text Files (*.txt)"));
if (fileName != "") {
QFile file(fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream stream(&file);
stream << ui->plainTextEdit->toPlainText();
file.close();
}
}
}
void MainWindow::on_actionExit_triggered()
{
QApplication::quit();
}
```
其中,MainWindow类的构造函数中使用了connect()函数将槽函数与菜单项的点击事件关联起来。on_actionNew_triggered()函数用于清空QPlainTextEdit中的内容;on_actionSave_triggered()函数用于将QPlainTextEdit中的内容保存到用户指定的文本文件中;on_actionExit_triggered()函数用于退出应用程序。
注释如下:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 将槽函数与菜单项的点击事件关联
connect(ui->actionNew, &QAction::triggered, this, &MainWindow::on_actionNew_triggered);
connect(ui->actionSave, &QAction::triggered, this, &MainWindow::on_actionSave_triggered);
connect(ui->actionExit, &QAction::triggered, this, &MainWindow::on_actionExit_triggered);
}
MainWindow::~MainWindow()
{
delete ui;
}
// 槽函数,清空QPlainTextEdit中的内容
void MainWindow::on_actionNew_triggered()
{
ui->plainTextEdit->clear();
}
// 槽函数,将QPlainTextEdit中的内容保存到用户指定的文本文件中
void MainWindow::on_actionSave_triggered()
{
// 获取保存文件的路径
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "", tr("Text Files (*.txt)"));
// 如果用户选择了保存文件的路径,则执行保存操作
if (fileName != "") {
QFile file(fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream stream(&file);
stream << ui->plainTextEdit->toPlainText(); // 将QPlainTextEdit中的内容写入文件
file.close();
}
}
}
// 槽函数,退出应用程序
void MainWindow::on_actionExit_triggered()
{
QApplication::quit();
}
```
阅读全文
相关推荐












