Qt__状态栏(statusBar)
轉自豆子空間
狀態欄位于主窗口的最下方,提供一個顯示工具提示等信息的地方。一般地,當窗口不是最大化的時候,狀態欄的右下角會有一個可以調節大小的控制點;當窗口最大化的時候,這個控制點會自動消失。Qt提供了一個QStatusBar類來實現狀態欄。
QMainWindow類里面就有一個statusBar()函數,用于實現狀態欄的調用。類似menuBar()函數,如果不存在狀態欄,該函數會自動創建一個,如果已經創建則會返回這個狀態欄的指針。如果你要替換掉已經存在的狀態欄,需要使用QMainWindow的setStatusBar()函數。
在Qt里面,狀態欄顯示的信息有三種類型:臨時信息、一般信息和永久信息。其中,臨時信息指臨時顯示的信息,比如QAction的提示等,也可以設置自己的臨時信息,比如程序啟動之后顯示Ready,一段時間后自動消失——這個功能可以使用QStatusBar的showMessage()函數來實現;一般信息可以用來顯示頁碼之類的;永久信息是不會消失的信息,比如可以在狀態欄提示用戶Caps Lock鍵被按下之類。
QStatusBar繼承自QWidget,因此它可以添加其他的QWidget。下面我們在QStatusBar上添加一個QLabel。
在mainwindow.h的class的聲明中添加一個私有的QLabel屬性:
private:
QAction *openAction;
QLabel *msgLabel;
然后在其構造函數中添加:
msgLabel = new QLabel;
msgLabel->setMinimumSize(msgLabel->sizeHint());
msgLabel->setAlignment(Qt::AlignHCenter);
statusBar()->addWidget(msgLabel);
這里,第一行創建一個QLabel的對象,然后設置最小大小為其本身的建議大小——注意,這樣設置之后,這個最小大小可能是變化的——最后設置顯示規則是水平居中(HCenter)。最后一行使用statusBar()函數將這個label添加到狀態欄。編譯運行,將鼠標移動到工具條或者菜單的QAction上,狀態欄就會有相應的提示:
當沒有任何提示時,狀態欄會有一個短短的豎線:(ps:原貼中有豎線我的窗口就沒有豎線)
這是什么呢?其實,這是QLabel的邊框。當沒有內容顯示時,QLabel只顯示出自己的一個邊框。但是,很多情況下我們并不希望有這條豎線,于是,我們對statusBar()進行如下設置:
statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}"));
這里先不去深究這句代碼是什么意思,簡單來說,就是把QStatusBar的子組件的border設置為0,也就是沒有邊框。現在再編譯試試吧!那個短線消失了!
總結
以上是生活随笔為你收集整理的Qt__状态栏(statusBar)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【文件系统异常】升级导致文件系统异常总结
- 下一篇: 楼梯装修扶手的尺寸是多少?楼梯装饰扶手注