From c92c63bb96993c5e63364bd9010f0badf03f020b Mon Sep 17 00:00:00 2001 From: flykhan Date: Tue, 8 Aug 2023 22:37:07 +0800 Subject: [PATCH] =?UTF-8?q?day2:=20homework=20=E7=AC=AC=E4=BA=8C=E5=88=B0?= =?UTF-8?q?=E5=85=AD=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homework-day2-2/homework-day2-2.pro | 3 + homework-day2-2/mainwindow.cpp | 86 +++++++++++++++++++++++++++++ homework-day2-2/mainwindow.h | 20 +++++++ homework-day2-2/res.qrc | 9 ++- 4 files changed, 116 insertions(+), 2 deletions(-) diff --git a/homework-day2-2/homework-day2-2.pro b/homework-day2-2/homework-day2-2.pro index 46fb397..4b66c5a 100644 --- a/homework-day2-2/homework-day2-2.pro +++ b/homework-day2-2/homework-day2-2.pro @@ -26,3 +26,6 @@ HEADERS += \ qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target + +RESOURCES += \ + res.qrc diff --git a/homework-day2-2/mainwindow.cpp b/homework-day2-2/mainwindow.cpp index 47b43a3..2039c69 100644 --- a/homework-day2-2/mainwindow.cpp +++ b/homework-day2-2/mainwindow.cpp @@ -3,6 +3,92 @@ 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() diff --git a/homework-day2-2/mainwindow.h b/homework-day2-2/mainwindow.h index d147190..0885f15 100644 --- a/homework-day2-2/mainwindow.h +++ b/homework-day2-2/mainwindow.h @@ -1,12 +1,32 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include class MainWindow : public QMainWindow { Q_OBJECT +private: + QMenuBar *menu_bar; // 菜单栏 + QMenu *menu1,*menu2,*menu3,*menu4; // 文件、编辑、查看、关于 + QStatusBar *status_bar; // 状态栏 + QTextEdit *text_edit; // 文本编辑(中心空间) + QAction *openAction,*saveAction,*exitAction; // 打开、保存、退出 + QAction *aboutAction,*aboutQtAction; // 关于、关于Qt + public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); diff --git a/homework-day2-2/res.qrc b/homework-day2-2/res.qrc index 90f4a83..de74c98 100644 --- a/homework-day2-2/res.qrc +++ b/homework-day2-2/res.qrc @@ -1,2 +1,7 @@ - - + + + images/logo.png + images/open.png + images/save.png + +