小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Qt基礎(chǔ)之菜單欄

 怡紅公子0526 2022-05-25 發(fā)布于北京

  本篇介紹Qt菜單欄相關(guān)操作,分為三部分:1.菜單欄相關(guān)的類介紹;2.系統(tǒng)菜單的生成和響應(yīng);3.彈出菜單的生成和響應(yīng);菜單欄通常只有以QMainWindow為基類的程序中才用到,以QWidget為基類的程序通常沒(méi)有菜單欄。

1. 菜單相關(guān)類

  QMenuBar --菜單欄類,即下圖中紅色區(qū)域標(biāo)記,菜單欄類給窗口提供水平菜單欄,此菜單欄占用窗口上方區(qū)域,垂直高度不變,水平寬度為窗口寬度,可隨窗口大小變化而變化。如下圖中“測(cè)試”,“test1”,"test2"所在的欄幾位QMenuBar

  QMenu --菜單項(xiàng),即下圖中綠色區(qū)域,下圖中“測(cè)試”,"test1","test2"都是一個(gè)獨(dú)立的菜單,包含各個(gè)子菜單。QMenu還可以用來(lái)創(chuàng)建彈出菜單

  QAction --子菜單,即下圖中藍(lán)色區(qū)域標(biāo)記的內(nèi)容,一個(gè)子菜單對(duì)應(yīng)一個(gè)操作。

2.系統(tǒng)菜單的生成和響應(yīng)

2.1.使用代碼添加系統(tǒng)菜單

示例源碼:

.h文件

 1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3  4 #include <QMainWindow> 5 #include <QMenuBar> 6  7 QT_BEGIN_NAMESPACE 8 namespace Ui { class MainWindow; } 9 QT_END_NAMESPACE10 11 class MainWindow : public QMainWindow12 {13     Q_OBJECT14 15 public:16     MainWindow(QWidget *parent = nullptr);17     ~MainWindow();18 19     //菜單欄20     QMenuBar *pMenuBar;21     //菜單項(xiàng)22     QMenu *pMenuTest;23     QMenu *pMenuTest1;24     QMenu *pMenuTest2;25     //子菜單26     QAction *pActionTest;27     QAction *pActionTest1;28     QAction *pActionTest2;29     QAction *pActionTest3;30     QAction *pActionTest4;31     QAction *pActionTest5;32     QAction *pActionTest6;33 34 public slots:35     //菜單響應(yīng)函數(shù)36     void OnActionTest();37     void OnActionTest1();38 39 private:40     Ui::MainWindow *ui;41 };42 #endif // MAINWINDOW_H

.cpp文件

 1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 #include <QDialog> 4  5 //是否啟用QMainWindow自帶的菜單欄 6 //#define USE_DEFAULT_MENU_BAR 7  8 MainWindow::MainWindow(QWidget *parent) 9     : QMainWindow(parent)10     , ui(new Ui::MainWindow)11 {12     ui->setupUi(this);13 14     //指定菜單欄15 #ifdef USE_DEFAULT_MENU_BAR16     //添加菜單欄(此處添加為的為QMainWindow自帶的菜單)17     pMenuBar = this->menuBar();18 #else19     //添加自定義菜單20     pMenuBar = new QMenuBar(this);21 #endif22 23     //定義菜單項(xiàng)24     //(&n)代表快捷方式,當(dāng)窗口獲得焦點(diǎn)時(shí)按alt+n即可打開(kāi)“測(cè)試”菜單項(xiàng)25     pMenuTest = new QMenu("測(cè)試(&n)",this);26     pMenuTest1 = new QMenu("test1",this);27     pMenuTest2 = new QMenu("test2",this);28 29     //定義子菜單30     //(&s)為子菜單快捷鍵,當(dāng)打開(kāi)該菜單項(xiàng)后,按下's’鍵即可響應(yīng)31     pActionTest = new QAction("測(cè)試(&s)",this);32     //新建一個(gè)帶圖標(biāo)的菜單項(xiàng),圖標(biāo)使用資源文件中的資源33     pActionTest1 = new QAction(QIcon(":/new/prefix1/resource/soccer_ball.ico"),"測(cè)試1",this);34     pActionTest2 = new QAction("測(cè)試2",this);35     pActionTest3 = new QAction("測(cè)試3(&Y)",this);36     pActionTest4 = new QAction("測(cè)試4",this);37     pActionTest5 = new QAction("測(cè)試5(&M)",this);38     pActionTest6 = new QAction("測(cè)試6",this);39 40     //將菜單項(xiàng)添加到子菜單41     pMenuTest->addAction(pActionTest);42     pMenuTest->addAction(pActionTest1);43     //在菜單項(xiàng)之間添加分割線44     pMenuTest->addSeparator();45     pMenuTest->addAction(pActionTest2);46 47     pMenuTest1->addAction(pActionTest3);48     pMenuTest1->addAction(pActionTest4);49 50     pMenuTest2->addAction(pActionTest5);51     pMenuTest2->addAction(pActionTest6);52 53     //將子菜單添加到菜單欄54     pMenuBar->addMenu(pMenuTest);55     pMenuBar->addMenu(pMenuTest1);56     pMenuBar->addMenu(pMenuTest2);57 58 #ifndef USE_DEFAULT_MENU_BAR59     //當(dāng)不使用QMainWindow自帶的菜單欄時(shí),必須要加上此行60     setMenuBar(pMenuBar);61 #endif62 63     //添加菜單響應(yīng)函數(shù)64     connect(pActionTest,&QAction::triggered,this,&MainWindow::OnActionTest);65     connect(pActionTest1,&QAction::triggered,this,&MainWindow::OnActionTest);66 }67 68 69 //菜單響應(yīng)函數(shù)70 void MainWindow::OnActionTest()71 {72     QDialog dlg;73     dlg.setWindowTitle("測(cè)試菜單響應(yīng)");74     dlg.exec();75 }76 77 void MainWindow::OnActionTest1()78 {79 80     QDialog dlg;81     dlg.setWindowTitle("測(cè)試菜單響應(yīng)");82     dlg.exec();83 }84 85 MainWindow::~MainWindow()86 {87     delete ui;88 }

  上面的代碼中定義了兩種創(chuàng)建系統(tǒng)菜單的方式:調(diào)用QMainWindow自帶的菜單欄和自己新建菜單欄,由第6行定義的宏控制,顯示效果相同。

  第25行為“測(cè)試”子菜單添加快捷鍵,當(dāng)窗口獲得焦點(diǎn)時(shí)按alt+n可展開(kāi)“測(cè)試”子菜單。

  第31行為“測(cè)試”子菜單“測(cè)試”菜單項(xiàng)添加快捷鍵,當(dāng)“測(cè)試”子菜單彈出后按's’鍵,程序即可做出響應(yīng)。

  第33行為“測(cè)試”子菜單的“測(cè)試2”菜單項(xiàng)添加了圖標(biāo)。

  第44行為“測(cè)試”子菜單的“測(cè)試2”和“測(cè)試3”之間添加了分割線。

2.2.使用UI設(shè)計(jì)器設(shè)計(jì)系統(tǒng)菜單

  進(jìn)入“設(shè)計(jì)”頁(yè)面,進(jìn)入如下圖所示的界面,具體操作方法見(jiàn)如下兩張圖,注意:輸入菜單名稱后一定要按“Enter”鍵才能生效。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多