使用QT写一个记事本 实现mainwindows功能,要求拥有菜单栏 状态栏,中心部件,工具,并实现文件打开 利用信号和槽函数实现)文件保存的代码实现
时间: 2024-04-14 10:27:09 浏览: 126
以下是一个使用QT编写记事本的示例代码,实现了MainWindow的功能,包括菜单栏、状态栏、中心部件、工具,以及文件打开和保存功能:
mainwindow.h 文件:
```cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void openFile();
void saveFile();
private:
void createMenu();
void createToolbar();
void createStatusBar();
void createCentralWidget();
QString currentFilePath;
};
#endif // MAINWINDOW_H
```
mainwindow.cpp 文件:
```cpp
#include "mainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QFileDialog>
#include <QTextEdit>
#include <QToolBar>
#include <QStatusBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
createMenu();
createToolbar();
createStatusBar();
createCentralWidget();
}
MainWindow::~MainWindow()
{
}
void MainWindow::createMenu()
{
QMenuBar *menuBar = new QMenuBar(this);
setMenuBar(menuBar);
QMenu *fileMenu = menuBar->addMenu(tr("文件"));
QAction *openAction = fileMenu->addAction(tr("打开"));
connect(openAction, &QAction::triggered, this, &MainWindow::openFile);
QAction *saveAction = fileMenu->addAction(tr("保存"));
connect(saveAction, &QAction::triggered, this, &MainWindow::saveFile);
}
void MainWindow::createToolbar()
{
QToolBar *toolbar = new QToolBar(this);
addToolBar(toolbar);
QAction *openAction = toolbar->addAction(QIcon(":/icons/open.png"), tr("打开"));
connect(openAction, &QAction::triggered, this, &MainWindow::openFile);
QAction *saveAction = toolbar->addAction(QIcon(":/icons/save.png"), tr("保存"));
connect(saveAction, &QAction::triggered, this, &MainWindow::saveFile);
}
void MainWindow::createStatusBar()
{
QStatusBar *statusBar = new QStatusBar(this);
setStatusBar(statusBar);
}
void MainWindow::createCentralWidget()
{
QTextEdit *textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
}
void MainWindow::openFile()
{
QString filePath = QFileDialog::getOpenFileName(this, tr("打开文件"));
if (!filePath.isEmpty()) {
// 打开文件的逻辑处理
// 这里只简单的将文件路径保存起来
currentFilePath = filePath;
}
}
void MainWindow::saveFile()
{
if (!currentFilePath.isEmpty()) {
// 保存文件的逻辑处理
// 这里只简单的展示一个保存成功的消息框
QMessageBox::information(this, tr("保存文件"), tr("文件保存成功!"));
} else {
QMessageBox::warning(this, tr("保存文件"), tr("当前没有打开的文件!"));
}
}
```
这是一个简单的记事本实现代码,您可以根据需要进一步完善和优化。注意,在编译运行之前,您需要将 `open.png` 和 `save.png` 图片资源添加到项目中,并在.pro文件中添加相应的资源配置。
希望这个示例对您有帮助!如果您有任何问题,请随时提问。
阅读全文