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

2021-09-27 02:46:37 字數 2115 閱讀 3949

在《動作》筆記中有如下**:

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"));

file->addaction(openaction);

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

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

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

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

下面的 q******* 部分非常類似。顧名思義,q******* 就是工具欄。我們使用的是 add*******() 函式新增新的工具欄。為什麼前面乙個是 menubar() 而現在的是 add*******() 呢?因為乙個視窗只有乙個選單欄,但是卻可能有多個工具欄。如果我們將**修改一下:

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

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

q******* ********2 = add*******(tr("tool bar 2"));

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

前面我們說過,使用 qaction::setstatustip() 可以設定該動作在狀態列上的提示文字。但我們現在把滑鼠放在按鈕上,是看不到這個提示文字的。原因很簡單,我們沒有新增乙個狀態列。怎麼新增呢?類似前面的 qmainwindow::menubar(),qmainwindow 有乙個 statusbar() 函式。讓我們把這個函式新增上去:

q******* ********2 = add*******(tr("tool bar 2"));

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

statusbar();

我們新增了乙個孤零零的 statubar() 顯得不倫不類,但是,同前面的 menubar() 的實現類似,這個函式會返回乙個 qstatusbar 物件,如果沒有則先建立再返回。

qstatusbar 繼承了 qwidget,因此,我們可以將其它任意 qwidget 子類新增到狀態列,從而實現類似 photoshop 視窗底部那種有比例顯示、有網格開關的複雜狀態列。有關 qstatusbar 的更多資訊,請參考 qt 文件。

對於沒有這些函式的 qdialog 或者 qwidget 怎麼做呢?要記得,q******* 以及 qstatusbar 都是 qwidget 的子類,因此我們就可以將其結合布局管理器新增到另外的 qwidget 上面。qlayout 布局提供了 setmenubar() 函式,可以方便的新增選單欄。具體細節還是詳見文件。

至此,我們已經將組成視窗元素介紹過一遍。結合這些元素以及布局管理,我們就應該可以實現乙個簡單的通用的視窗。當我們完成視窗布局之後,我們就可以考慮向其中新增功能。這就是我們後面章節的內容。

QT工具欄和選單欄

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

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

學習自 將使用者與介面進行互動的元素抽象為一種 動作 使用qaction類類表示。qaction可以新增到選單欄 工具欄上。在實際開發過程中,qmainwindow通常只作為 主視窗 對話方塊視窗則更多地使用qdialog類。我們會在後面看到,qdialog類會缺少一些qmainwindow類提供方...

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

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