Qt状态栏(QStatusBar)使用

您所在的位置:网站首页 状态栏是干什么用的 Qt状态栏(QStatusBar)使用

Qt状态栏(QStatusBar)使用

2024-07-15 18:33:21| 来源: 网络整理| 查看: 265

@TOC

[1] Qt状态栏(QStatusBar)使用

原文链接:https://blog.csdn.net/coologic/article/details/102968197

介绍

在QMainWindow最下方有状态栏QStatusBar,相关API:帮助

Qt主要将状态栏的信息分为五大类:

右下角的窗口尺寸调整符号,右下角的小黑三角。提供两个方法isSizeGripEnabled()、setSizeGripEnabled(bool)设置其是否显示。每个单元之间的小竖线,分割不同的控件,仔细看了看感觉也不是状态栏提供的分割控件更像是插入到其中的控件的边框线。。。这也算他一大类吧,隐藏方法: //将状态栏的所有item边框宽度设置为0 statusBar()->setStyleSheet(“QStatusBar::item{border: 0px}”); 永久信息显示,永久信息在状态栏最右侧。通过addPermanentWidget、insertPermanentWidget,这种信息会一直显示,一般是不改变的,比如版权、作者等,特殊功能的按钮等等,本质还是widget。Permanently means that the widget may not be obscured by temporary messages. It is is located at the far right of the status bar.非永久信息显示、一般信息显示,在最左侧,通过addWidget、insertWidget进行插入。同理说是信息实际是widget,可以是按钮等。临时信息,临时信息封装的很简单,不需要自己newwidget了,只需要直接传入信息内容和信息显示时间即可。currentMessage、showMessage、clearMessage,此类信息不需要自行创建widget,想要移除消息可以等showMessage的时间到了自动消失或者主动地使用clear。 使用 移除widget

其实上面已经整理了几乎所有的方法,剩余的方法比如removeWidget可以在插入了widget后再取出来,注意相关提示,remove本质是隐藏,并把widget的parent从状态栏转为null,若想要重新显示在状态栏需要重新add和show,注意还要show,因为被hide了。

Note: This function does not delete the widget but hides it. To add the widget again, you must call both the addWidget() and show() functions.

关于非永久信息的widget和永久信息PermanentWidget,实际上都是widget,可以做显示内容的修改,本质区别是,如果窗口小了,那PermanentWidget不会被showmessage的信息盖住

布局说明

PermanentWidget在窗口最右侧开始排列、普通Widget在最左侧开始排列,他们会限制窗口的最小宽度为两者widget所有item的最小宽度值,也就是说无论左右排列均会永久显示在窗口中,不会因为窗口缩小而被遮挡。 showMessage会在最左侧直接显示,等于覆盖了普通的Widget,若窗口已经达到最小,则无论showMessage内容有多长,只会显示左侧Widget可用的长度的内容,范例如下:

Palmshop by TechieLiang为PermanentWidget,左侧绿色的为普通widege,乱大的字母为showmessage。范例代码如下:

//状态栏设置 //不显示其内控件的边框 statusBar()->setStyleSheet("QStatusBar::item{border: 0px}"); //永久部件 statusBar()->addPermanentWidget(new QLabel(kProgramName + " by " + kProgramDeveloperName)); //临时部件 statusbar_state_label_ = new QLabel(this); statusBar()->addWidget(statusbar_state_label_); statusBar()->showMessage("kajsdlfkjalksdjfklsdjafjadsjflkads"); SetState("数据库登陆失败", false); void MainWindow::SetState(const QString &text, bool is_good) { QPalette pa; if(is_good) pa.setColor(QPalette::WindowText, Qt::green); else pa.setColor(QPalette::WindowText, Qt::red); statusbar_state_label_->setPalette(pa); statusbar_state_label_->setText(text); } 获取状态栏指针

获取状态栏指针,可以通过ui->XXXX获取,也可以直接在mainwindow中使用statusBar()获取指针,因为状态栏只会有一个。

showMessage

第二个参数是毫秒显示时间,可以通过设置以后,Qt会显示指定时间后自动删除当前消息内容。若不设置,将会一直显示知道clear,或者当下一次调用show。

If timeout is 0 (default), the message remains displayed until the clearMessage() slot is called or until the showMessage() slot is called again to change the message.

注意,每次调用show,会清理以前的message,所以不要抱有永久显示某条消息的目的使用showmessage(“XXXX”,0);

[2] Qt状态栏(statusbar)的使用

原文链接

Qt学习之状态栏

QStatusBar类提供一个水平条来显示状态信息。所谓状态信息,拿个简单的例子来说,当你在word中编辑时,左下角就会出现页面、字数等等信息。状态信息可以分为三类:临时信息,如一般的提示信息;正常信息,如页数;永久信息,如版本信息。QMainWindow中默认提供了一个状态栏。我们可以使用showMessage()来显示一个临时消息,它会出现在状态栏的最左边。我们一般用addWidget()将一个QLabel加到状态栏上用于显示正常信息,它会生成到状态栏的最左边,可能会被临时消息覆盖。我们使用addPermanentWidget()来添加一个QLabel来在状态栏的最右边显示永久信息。它不会被临时信息所掩盖。

在状态栏的最右端还有一个QSizeGrip部件用来调整窗口大小,我们可以通过setSizeGripEnabled()函数来禁用它。也许你想通过使用Qt Designer来可视化地完成窗口布局。但是事与愿违,目前的设计器还不支持直接向状态栏中拖放部件,所以我们就不能偷懒了,必须使用代码来设置了。下面程序为对状态栏的测试程序,只需要编辑mainwindow的构造函数如下:不要忘记应包含相应的头文件

状态栏显示的信息分3种

1. 一般信息,用QLabel 代表 2. 永久信息,文本会一直显示在状态栏的最右边。 3. 临时信息,指定信息现实的时间。时间到即信息消失

//QLabel *locationLabel; locationLabel = new QLabel("July"); locationLabel->setAlignment(Qt::AlignCenter); locationLabel->setMinimumSize(locationLabel->sizeHint()); //QLabel *aixLabel; aixLabel = new QLabel("\"CTRL + H\" for help"); //Optional statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}")); // 设置不显示label的边框 statusBar()->setSizeGripEnabled(false); //设置是否显示右边的大小控制点 statusBar()->addWidget(locationLabel); statusBar()->addWidget(aixLabel, 1); QLabel *per1 = new QLabel("Ready1", this); QLabel *per2 = new QLabel("Ready2", this); QLabel *per3 = new QLabel("Ready3", this); statusBar()->addPermanentWidget(per1); //现实永久信息 statusBar()->addPermanentWidget(per2); statusBar()->insertPermanentWidget(2, per3); statusBar()->showMessage("Status is here...", 3000); // 显示临时信息,时间3秒钟. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // QLabel *normal=new QLabel("正常信息",this); // ui->statusBar->addWidget(normal);//显示正常信息 ui->statusBar->setSizeGripEnabled(false);//去掉状态栏右下角的三角 ui->statusBar->showMessage(tr("临时信息!"),2000);//显示临时信息2000ms 前面的正常信息被覆盖 当去掉后一项时,会一直显示 QLabel *permanent=new QLabel(this); permanent->setFrameStyle(QFrame::Box|QFrame::Sunken); permanent->setText(tr("永久信息")); permanent->setOpenExternalLinks(true);//设置可以打开网站链接 ui->statusBar->addPermanentWidget(permanent);//显示永久信息 }


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭