一、版本
- Qt版本:qt-opensource-windows-x86-5.12.12.exe(https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.12/5.12.12/qt-opensource-windows-x86-5.12.12.exe)
- vs版本:vs2017企業版
二、statusBar相關操作
2.1界面文件狀態欄(*.ui文件增加/刪除狀態欄)
- ui文件刪除狀態欄:
- ui文件增加狀態欄:
2.2狀態欄相關操作
- 隱藏/顯示狀態欄(界面文件已經包含狀態欄)
1 //隱藏狀態欄 2 ui.statusBar->hide(); 3 4 //顯示狀態欄 5 ui.statusBar->show();
- 顯示或隱藏狀態欄右下角圖標
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;");