#include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { setWindowTitle("简单记事"); setFixedSize(800,600); QPixmap window_icon; window_icon.load(":logo"); setWindowIcon(QIcon(window_icon)); menu_bar = new QMenuBar(this); // 父组件为当前 MainWindow setMenuBar(menu_bar); menu1 = new QMenu("文件",menu_bar); // 父组件为 menu_bar openAction = new QAction("打开",menu1); // 父组件为 menu1 saveAction = new QAction("保存",menu1); exitAction = new QAction("退出",menu1); openAction->setShortcut(QKeySequence(tr("ctrl+o"))); // 快捷键绑定 saveAction->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_S)); exitAction->setShortcut(QKeySequence(tr("ctrl+q"))); connect(openAction,&QAction::triggered,[&]{ // 事件绑定 qDebug()<<"打开..."; // 打开文件 QString file_path = QFileDialog::getOpenFileName(this,"打开文件",".","Text(*.txt);;Markdown(*.md)"); QFile file(file_path); if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){ QMessageBox::critical(this,"错误","文件路径 "+file_path+" 打开错误"); return; // 提前返回 } QTextStream in(&file); text_edit->setMarkdown(in.readAll()); file.close(); }); connect(saveAction,&QAction::triggered,[&]{ qDebug()<<"保存..."; QString file_path = QFileDialog::getSaveFileName(this,"保存文件",".","Markdown(*.md)"); QFile file(file_path); if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){ QMessageBox::critical(this,"错误","文件路径 "+file_path+"无法保存"); return; } QTextStream out(&file); out << text_edit->toMarkdown(); file.close(); }); connect(exitAction,&QAction::triggered,[&]{ qDebug()<<"退出..."; this->close(); }); openAction->setIcon(QIcon(":open")); saveAction->setIcon(QIcon(":save")); menu1->addAction(openAction); menu1->addAction(saveAction); menu1->addAction(exitAction); menu2 = new QMenu("编辑",menu_bar); menu3 = new QMenu("查看",menu_bar); menu4 = new QMenu("关于",menu_bar); aboutAction = new QAction("关于软件",menu4); aboutQtAction = new QAction("关于Qt",menu4); connect(aboutAction,&QAction::triggered,[&]{ QMessageBox::about(this,"简单记事","这是一个简单的记事本"); }); connect(aboutQtAction,&QAction::triggered,[&]{ QMessageBox::aboutQt(this); }); menu4->addAction(aboutAction); menu4->addAction(aboutQtAction); menu_bar->addMenu(menu1); menu_bar->addMenu(menu2); menu_bar->addMenu(menu3); menu_bar->addMenu(menu4); status_bar = new QStatusBar(this); QLabel *left_status_label = new QLabel("行4 列19",status_bar); QLabel *right_status_label = new QLabel("utf-8",status_bar); status_bar->addWidget(left_status_label); status_bar->addPermanentWidget(right_status_label); // 添加永久小部件 setStatusBar(status_bar); text_edit = new QTextEdit("文本区占位符",this); setCentralWidget(text_edit); } MainWindow::~MainWindow() { }