日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

文本编辑器创建菜单栏

發(fā)布時(shí)間:2025/4/5 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文本编辑器创建菜单栏 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1 文本編輯器創(chuàng)建菜單欄

1 文本編輯器創(chuàng)建菜單欄

基于QMainWindow開發(fā)一款文本編輯器,首先實(shí)現(xiàn)創(chuàng)建菜單欄的代碼:

項(xiàng)目文件構(gòu)成如下:

MainWindow.h:

#ifndef _MAINWINDOW_H_ #define _MAINWINDOW_H_#include <QtGui/QMainWindow> #include <QKeySequence> #include <QMenuBar> #include <QToolBar> #include <QAction>class MainWindow : public QMainWindow {Q_OBJECTprivate:MainWindow();MainWindow(const MainWindow&);MainWindow& operator= (const MainWindow&);bool construct();bool initMenuBar();bool initFileMenu(QMenuBar* mb);bool initEditMenu(QMenuBar* mb);bool initFormatMenu(QMenuBar* mb);bool initViewMenu(QMenuBar* mb);bool initHelpMenu(QMenuBar* mb);bool makeAction(QAction*& action, QString text, int key); public:static MainWindow* NewInstance();~MainWindow(); };#endif // _MAINWINDOW_H_

MainWindow.cpp:

#include "MainWindow.h" #include <QMenu>MainWindow::MainWindow() {}MainWindow* MainWindow::NewInstance() {MainWindow* ret = new MainWindow();if( (ret == NULL) || !ret->construct() ){delete ret;ret = NULL;}return ret; }bool MainWindow::construct() {bool ret = true;ret = ret && initMenuBar();return ret; }bool MainWindow::initMenuBar() {bool ret = true;QMenuBar* mb = menuBar();ret = ret && initFileMenu(mb);ret = ret && initEditMenu(mb);ret = ret && initFormatMenu(mb);ret = ret && initViewMenu(mb);ret = ret && initHelpMenu(mb);return ret; }bool MainWindow::initFileMenu(QMenuBar* mb) {QMenu* menu = new QMenu("File(&F)");bool ret = (menu != NULL);if( ret ){QAction* action = NULL;ret = ret && makeAction(action, "New(&N)", Qt::CTRL + Qt::Key_N);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Open(&O)...", Qt::CTRL + Qt::Key_O);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Save(&S)", Qt::CTRL + Qt::Key_S);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Save As(&A)...", 0);if( ret ){menu->addAction(action);}menu->addSeparator();ret = ret && makeAction(action, "Print(&P)...", Qt::CTRL + Qt::Key_P);if( ret ){menu->addAction(action);}menu->addSeparator();ret = ret && makeAction(action, "Exit(&X)", 0);if( ret ){menu->addAction(action);}}if( ret ){mb->addMenu(menu);}else{delete menu;}return ret; }bool MainWindow::initEditMenu(QMenuBar* mb) {QMenu* menu = new QMenu("Edit(&E)");bool ret = (menu != NULL);if( ret ){QAction* action = NULL;ret = ret && makeAction(action, "Undo(&U)", Qt::CTRL + Qt::Key_Z);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Redo(&R)...", Qt::CTRL + Qt::Key_Y);if( ret ){menu->addAction(action);}menu->addSeparator();ret = ret && makeAction(action, "Cut(&T)", Qt::CTRL + Qt::Key_X);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Copy(&C)...", Qt::CTRL + Qt::Key_C);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Paste(&P)...", Qt::CTRL + Qt::Key_V);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Delete(&L)", Qt::Key_Delete);if( ret ){menu->addAction(action);}menu->addSeparator();ret = ret && makeAction(action, "Find(&F)...", Qt::CTRL + Qt::Key_F);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Replace(&R)...", Qt::CTRL + Qt::Key_H);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Goto(&G)...", Qt::CTRL + Qt::Key_G);if( ret ){menu->addAction(action);}menu->addSeparator();ret = ret && makeAction(action, "Select All(&A)", Qt::CTRL + Qt::Key_A);if( ret ){menu->addAction(action);}}if( ret ){mb->addMenu(menu);}else{delete menu;}return ret; }bool MainWindow::initFormatMenu(QMenuBar* mb) {QMenu* menu = new QMenu("Format(&O)");bool ret = (menu != NULL);if( ret ){QAction* action = NULL;ret = ret && makeAction(action, "Auto Wrap(&W)", 0);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Font(&F)...", 0);if( ret ){menu->addAction(action);}}if( ret ){mb->addMenu(menu);}else{delete menu;}return ret; }bool MainWindow::initViewMenu(QMenuBar* mb) {QMenu* menu = new QMenu("View(&V)");bool ret = (menu != NULL);if( ret ){QAction* action = NULL;ret = ret && makeAction(action, "Tool Bar(&T)", 0);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "Status Bar(&S)", 0);if( ret ){menu->addAction(action);}}if( ret ){mb->addMenu(menu);}else{delete menu;}return ret; }bool MainWindow::initHelpMenu(QMenuBar* mb) {QMenu* menu = new QMenu("Help(&H)");bool ret = (menu != NULL);if( ret ){QAction* action = NULL;ret = ret && makeAction(action, "User Manual", 0);if( ret ){menu->addAction(action);}ret = ret && makeAction(action, "About NotePad...", 0);if( ret ){menu->addAction(action);}}if( ret ){mb->addMenu(menu);}else{delete menu;}return ret; }bool MainWindow::makeAction(QAction*& action, QString text, int key) {bool ret = true;action = new QAction(text, NULL);if( action != NULL ){action->setShortcut(QKeySequence(key));}else{ret = false;}return ret; }MainWindow::~MainWindow() {}

main.cpp:

#include <QtGui/QApplication> #include "MainWindow.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow* w = MainWindow::NewInstance();int ret = -1;if( w != NULL ){w->show();ret = a.exec();}delete w;return ret; }

參考資料:

  • QT實(shí)驗(yàn)分析教程
  • 總結(jié)

    以上是生活随笔為你收集整理的文本编辑器创建菜单栏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 右手影院亚洲欧美 | 激情小说欧美色图 | 尹人综合网 | 欧美日韩一区二 | 色综综 | 人体写真 福利视频 | 亚洲欧美日韩另类 | 久久五月天av | 美女热逼 | 狠狠操婷婷 | 69av网| 久草美女| 91香蕉国产在线观看软件 | 国产精品果冻传媒 | 欧美大肚乱孕交hd孕妇 | 天堂中文在线最新 | 377人体粉嫩噜噜噜 www.av黄色 | 亚洲精品久久久久久宅男 | 日韩黄色影院 | 伊人网av| 亚洲第一大综合区 | 国产卡一卡二 | 九九视频在线 | 岛国av动作片 | 手机在线一区二区三区 | 91国偷自产一区二区三区观看 | 欧美乱做爰xxxⅹ久久久 | 丰满放荡岳乱妇91ww | 综合在线视频 | 精品免费一区 | 中文字幕高潮 | 国产私人影院 | 九七精品 | 国产日韩视频一区 | 久久亚洲AV无码专区成人国产 | 免费看的av片 | 精品国产一区二区三区久久狼黑人 | 成人免费一区二区 | 久久久久久久久久国产精品 | 精品人妻无码一区二区色欲产成人 | 中文字幕 国产精品 | 免费污视频在线观看 | 超碰在线观看99 | 亚洲国产成人精品一区二区三区 | 最近中文字幕在线中文高清版 | 久久这里只有精品6 | 欧美 日韩 国产 激情 | 国产高清在线不卡 | 少妇紧身牛仔裤裤啪啪 | 欧美精品一区二 | 国产精品大屁股白浆一区 | 九九九国产 | 三年大全国语中文版免费播放 | 国产白丝袜美女久久久久 | av影片在线播放 | 亚洲最大黄色网址 | 欧美精品免费看 | 一区二区三区四区在线视频 | 在线观看视频福利 | 精品国产乱码久久久久久闺蜜 | aa黄色大片| 日韩一三区 | 久久一区二| 国产精品福利在线 | 日本一区二区久久 | 91大神精品 | 日韩av网页 | 欧美高清在线视频 | 97视频成人 | 免费看成人aa片无码视频羞羞网 | 国产成人精品影院 | 国产视频日韩 | 噜噜吧噜噜色 | 日本国产精品视频 | 久久精品国产亚洲av蜜臀色欲 | 国产无玛| 国产95在线 | 国产原创av在线 | 清纯唯美亚洲色图 | 韩日免费av | 性一交一乱一精一晶 | 亚洲成av人片在线观看无码 | 久草免费在线视频观看 | 亚洲逼院 | 国产大学生视频 | 欧美有码在线观看 | 女性毛片| 国产农村av| 欧美日本韩国一区二区 | 欧美激情视频一区二区三区在线播放 | 久久伊| 无码国产精品高潮久久99 | 久久久久久无码精品人妻一区二区 | 中文字幕www | 日韩精品无码一区二区三区久久久 | 欧美成人免费在线 | 久久婷婷五月综合色吧 | 久久综合免费 | 特黄1级潘金莲 |