欢迎访问mehome的博客

Tomorrow is another day.
Fork me on GitHub

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;");


三、相关参考

posted @ 2022-01-13 17:06  mehome  阅读(1093)  评论(0编辑  收藏  举报