Qt界面状态栏
一、版本
- 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;");
三、相关参考
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。