Qt界面狀態欄


一、版本

二、statusBar相關操作

2.1界面文件狀態欄(*.ui文件增加/刪除狀態欄)

  • ui文件刪除狀態欄:

image

  • ui文件增加狀態欄:

image

2.2狀態欄相關操作

  • 隱藏/顯示狀態欄(界面文件已經包含狀態欄)
  1 //隱藏狀態欄
  2 ui.statusBar->hide();
  3 
  4 //顯示狀態欄
  5 ui.statusBar->show();
  • 顯示或隱藏狀態欄右下角圖標

image

  1 //隱藏右下角圖標,fales:不顯示角標;true:顯示角標。默認true
  2 ui.statusBar->setSizeGripEnabled(false);
  3 
  4 //獲取右下角圖標顯示狀態,也就是方法setSizeGripEnabled的設置值
  5 bool statusBarIsShow = ui.statusBar->isSizeGripEnabled();
  • 狀態欄從左側添加插件
  1 
  2 //創建QLable對象
  3 QLable *mp_lable_statistic = new QLabel(this);
  4 
  5 //設置Lable內容
  6 mp_lable_statistic->setText(QString::fromLocal8Bit("系統中圖書數量:%1 冊").arg(str));
  7 
  8 //設置背景顏色
  9 mp_lable_statistic->setStyleSheet("background-color: rgb(211, 211, 211);");
 10 
 11 //添加到狀態欄,從左側依次添加
 12 ui.statusBar->addWidget(mp_lable_statistic);
  • 狀態欄右側添加插件
  1 //創建按鍵對象
  2 QPushButton *mp_btn_dbstatus = new QPushButton(this);
  3 
  4 //設置按鈕不可點擊
  5 mp_btn_dbstatus->setEnabled(false);
  6 
  7 //設置按鈕高、寬
  8 mp_btn_dbstatus->setMaximumHeight(25);
  9 mp_btn_dbstatus->setMaximumWidth(25);
 10 
 11 //設置按鈕形狀為直徑22的圓形
 12 mp_btn_dbstatus->setMask(QRegion(0, 0, 22, 22, QRegion::Ellipse));
 13 
 14 //設置按鈕文字字號
 15 QFont font = mp_btn_dbstatus->font();
 16 font.setPointSize(8);
 17 mp_btn_dbstatus->setFont(font);
 18 
 19 //設置按鈕背景顏色
 20 mp_btn_dbstatus->setStyleSheet("background-color: rgb(0, 255, 0);");
 21 
 22 //設置按鈕文字
 23 mp_btn_dbstatus->setText(QString::fromLocal8Bit("正常"));
 24 
 25 //添加到狀態欄右側,后添加的在最右側
 26 ui.statusBar->addPermanentWidget(mp_btn_dbstatus);
  • 狀態欄臨時顯示信息(可以設置定時消失)
    • 顯示的臨時信息在狀態欄左側;
    • 狀態欄沒有設置超時消失時間則會一直顯示;
    • 臨時信息一直顯示時,用addWidget方法增加插件會導致增加的插件和臨時信息重疊;
    • 臨時信息定時消失,消失后不會顯示插入的插件信息,需要寫槽函數on_pb_search_clicked()來實現消失后顯示原來插件;
    • 臨時信息需要先添加,然后再用addWidget方法增加插件,才可以顯示臨時信息,否則不顯示臨時信息;
    • 如果不設置臨時信息消失時間,又需要操作讓臨時信息消失,可以調用clearMessage方法;
    • addWidget、clearMessage方法是statusBar對象的方法,on_pb_search_clicked()槽函數時statusBar所在界面對象的槽函數。
  1 //設置狀態臨時顯示信息,信息內容“ShowMessage”,2秒后自動消失;
  2 ui.statusBar->showMessage("ShowMessage",2000);
  3 
  4 //如果沒有設置2秒自動消失或者兩秒內可以通過這個操作清除顯示的臨時信息;
  5 //ui.statusBar->clearMessage();

on_statusBar_messageChanged槽函數樣例:

  1 void MyDoc::on_statusBar_messageChanged(const QString &msg)
  2 {
  3 	if (ui.statusBar->currentMessage() == "ShowMessage")
  4 	{
  5 		return;
  6 	}
  7 	if (ui.statusBar->currentMessage() == "")
  8 	{
  9 		mp_lable_statistic->show();
 10 	}
 11 }
  • 狀態欄中插件邊框線統一設置
  1 //不顯示其內控件的邊框
  2 statusBar()->setStyleSheet(“QStatusBar::item{border: 0px}”);
  • 狀態欄背景色設置
  1 ui.statusBar->setStyleSheet("#statusBar{background-color:rgb(0,0,200);}");


  • 狀態欄邊框線設置

注意:邊框線會被狀態欄內的組件繼承

  1 //上面線點線
  2 //右邊線隱藏
  3 //下邊線隱藏
  4 //左邊線隱藏
  5 //border-style必須設置,否則不顯示邊框線
  6 ui.statusBar->setStyleSheet("border-color: rgb(0, 255, 0);border-width: 1px;border-style:  dotted hidden hidden hidden;");


三、相關參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM