Qt學習筆記2 選單欄 工具欄和狀態列

2021-09-25 06:29:03 字數 1804 閱讀 1753

學習自: 將使用者與介面進行互動的元素抽象為一種「動作」,使用qaction類類表示。

qaction可以新增到選單欄、工具欄上。

在實際開發過程中,qmainwindow通常只作為「主視窗」,對話方塊視窗則更多地使用qdialog類。我們會在後面看到,qdialog類會缺少一些qmainwindow類提供方便的函式,比如menubar()以及*******()。

如下「新增動作」**片段:

openaction = new qaction(qicon(":/images/doc-open"), tr("&open..."), this);

openaction->setshortcuts(qkeysequence::open);

openaction->setstatustip(tr("open an existing file"));

connect(openaction, &qaction::triggered, this, mainwindow::open);

qmenu *file = menubar()->addmenu(tr("&file")); //直接使用menubar()函式的返回值

file->addaction(openaction);

q******* ******** = add*******(tr("&file"));

*******->addaction(openaction);

statusbar();

menubar()函式:qt 為我們建立了乙個選單欄。menubar()是qmainwindow提供的函式,因此你是不會在qwidget或者qdialog中找到它的。這個函式會返回視窗的選單欄,如果沒有選單欄則會新建立乙個。這也就解釋了,為什麼我們可以直接使用menubar()函式的返回值,畢竟我們並沒有建立乙個選單欄物件啊!原來,這就是menubar()為我們建立好並且返回了的。

qmenubar類:選單類,代表的是視窗最上方的一條選單欄。我們使用其addmenu()函式為其新增選單。儘管我們只是提供了乙個字串作為引數,但是 qt 為將其作為新建立的選單的文字顯示出來。& 符號,表示這可以為選單建立乙個快捷鍵。當我們建立出來了選單物件時,就可以把qaction新增到這個選單上面,也就是addaction()函式的作用。

q*******類就是工具欄。我們使用的是add*******()函式新增新的工具欄。為什麼前面乙個是menubar()而現在的是add*******()呢?因為乙個視窗只有乙個選單欄,但是卻可能有多個工具欄。工具欄可以設定成固定的、浮動的等等。

qaction::setstatustip()函式:設定該動作在狀態列上的提示文字。類似前面的qmainwindow::menubar()函式,qmainwindow有乙個statusbar()函式,用於新增乙個狀態列。

qstatusbar類:qmainwindow::statusbar()函式會返回乙個qstatusbar物件,如果沒有則先建立再返回。qstatusbar類繼承了qwidget類,因此,我們可以將其它任意qwidget子類新增到狀態列,從而實現類似 photoshop 視窗底部那種有比例顯示、有網格開關的複雜狀態列。

QT工具欄和選單欄

在qt小知識中了解了向mainwindow中新增選單欄和工具欄,現在學習美化它們 新增圖示。主要是對qt學習之路13的理解。關於qt中 圖示的要求 q 預設是32 32,選單是16 16,如果提供的圖示小於預設要求的尺寸,qt不做操作,qt不會為你放大 如果提供的圖示大於預設要求的尺寸,比如64 6...

Qt學習筆記 選單欄 工具欄和狀態列

在 動作 筆記中有如下 openaction new qaction qicon images doc open tr open.this openaction setshortcuts qkeysequence open openaction setstatustip tr open an exi...

QT學習記錄 選單欄工具欄狀態列

選單欄 qmenubar mbar menubar 建立選單欄 1.qmenu pfile mabr addmenu 檔案 建立選單,mainwindow上本來就有選單欄 工具欄 狀態列,直接通過介面獲取就行 2.qmenu pfile newqmenu 檔案 mbar addmenu pfile ...