每日激勵:“不設限和自我肯定的心態:I can do all things。 — Stephen Curry”
緒論?:
一段時間沒有更新,這段時間一直在忙各種事情,后續將再次上路持續更新C++相關知識
本章將繼續前面的QT篇章,本章主要講到Qt界面中的工具欄和狀態欄,它和前面Qt窗口中的菜單欄blog關系非常密切,通過學習這三個內容你就能搭建一個窗口的基本框架了,后續還將更新子窗口的創建,敬請期待~
————————
早關注不迷路,話不多說安全帶系好,發車啦(建議電腦觀看)。
工具欄QToolBar 🪚🔨??
??工具欄是應?程序中集成各種功能實現快捷鍵使?的?個區域。可以有多個,也可以沒有,它并不是應?程序中必須存在的組件。
- 它是?個可移動的組件
- 它的元素可以是各種窗?組件
- 它的元素通常以圖標按鈕的?式存在。
如下圖為?具欄的?意圖🗺?:
使用QToolBar表示工具欄對象,一個窗口可以有多個工具欄,也可以沒有,工具欄也可以手動移動位置。調? QMainWindow類 的 addToolBar() 函數來創建?具欄,每增加?個?具欄都需要調??次該函數。
實操1🎈
-
創建菜單欄MenuBar
-
創建菜單QMenu(文件),并添加到菜單欄中
-
手動創建QToolBar對象toolBar,再將工具欄加到窗口中(
addToolBar
) -
創建工具項兩個
QAction
對象,構造輸入名稱 -
添加到工具欄和菜單欄中
addAction
-
給工具項使用triggered信號添加信號handle1 2(內部進行打印)
-
不過典型的工具欄一般是圖標而不是文本
-
給工具項設置圖標 setIcon
-
QAction如果出現在工具欄上,也會產生 圖標 覆蓋文本
-
但注意的是:
- 此處被覆蓋的文本 會以 tooltip的形式展示
但注意的是QAction即是QMenu的子元素又是QToolBar的子元素,釋放的時候只會釋放一次,并不會重復delete
實操2:創建多個工具欄🎈
-
創建兩個工具欄,并添加到窗口中 addToolBar
-
創建4個菜單項QAction并分別添加到工具欄中
- 其中這倆個工具前面的 … 時代表可以移動的狀態
- 其中這倆個工具前面的 … 時代表可以移動的狀態
-
可以設置工具欄出現的初始位置,在addToolBar構造的時候進行設置使用另外一種重載的函數:設置第一個參數為停靠的位置:
- Qt::LeftToolBarArea 停靠在左側
- Qt::RightToolBarArea 停靠在右側
- Qt::TopToolBarArea 停靠在頂部
- Qt::BottomToolBarArea 停靠在底部
- Qt::AllToolBarAreas 以上四個位置都可停靠
- 可以設置工具欄允許停放到那些邊緣
- QToolBar方法 setAllowedAreas(參數同上,以 | 進行增加)
- 可以設置工具欄是否允許浮動、移動
-
setFloatable 不允許浮動(當設置不允許時就無法浮動)
-
setMoveable 不允許移動
-
狀態欄🫠🫠QStatusBar
狀態欄簡單從記事本來理解就如下圖框選:
同樣的和菜單欄類似Qt會默認生成一個
實操🎈
- 在我們創建的時候也是使用statusBar的時候,存在就獲取,不存在就創建
- 將status設置到窗口中 setStatusBar(狀態欄沒有被創建這里是必要的,若存在沒啥副作用)
- 顯示臨時信息,showMessage(message,顯示時間ms)
- 給狀態欄中添加一個子控件
- 狀態欄使用addWidget條件,第一個參數是控件對象,第二個參數是一個拉伸系數
- QLabel、ProgressBar、PushButton…
- addPermanentWidget從右往左的添加控件
源碼:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStatusBar>
#include <QLabel>
#include <QProgressBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QStatusBar* status = new QStatusBar();setStatusBar(status);// showMessage("111",1000);QLabel* label = new QLabel("完成度:");QProgressBar* pro = new QProgressBar();
// 從左往右添加,參數1:widget、參數2:拉伸系數
// status->addWidget(label);
// status->addWidget(pro);status->addPermanentWidget(label);status->addPermanentWidget(pro);}MainWindow::~MainWindow()
{delete ui;
}
最終效果
本章完。預知后事如何,暫聽下回分解。
如果有任何問題歡迎討論哈!
如果覺得這篇文章對你有所幫助的話點點贊吧!
持續更新大量C++ qt細致內容,早關注不迷路。
?