qt 状态栏

摘要:
状态栏位于主窗口的底部,提供了显示工具提示等信息的位置。Qt提供了一个QStatusBar类来实现状态栏。在Qt中,状态栏中显示三种类型的信息:临时信息、一般信息和永久信息。最后一行使用statusBar()函数将此标签添加到状态栏。编译并运行。将鼠标移到工具栏或菜单的QAction上,状态栏将提示:看起来方便吗?现在,我们的状态栏已经初步完成。由于QStatusBar可以添加多个QWidget,我们可以构建一个非常复杂的状态栏。
有段时间没有写过博客了。假期去上海旅游,所以一直没有能够上网。现在又来到这里,开始新的篇章吧!
今天的内容主要还是继续完善前面的那个程序。我们要为我们的程序加上一个状态栏。
状态栏位于主窗口的最下方,提供一个显示工具提示等信息的地方。一般地,当窗口不是最大化的时候,状态栏的右下角会有一个可以调节大小的控制点;当窗口最大化的时候,这个控制点会自动消失。Qt提供了一个QStatusBar类来实现状态栏。
Qt具有一个相当成熟的GUI框架的实现——这一点感觉比Swing要强一些——Qt似乎对GUI的开发做了很多设计,比如QMainWindow类里面就有一个statusBar()函数,用于实现状态栏的调用。类似menuBar()函数,如果不存在状态栏,该函数会自动创建一个,如果已经创建则会返回这个状态栏的指针。如果你要替换掉已经存在的状态栏,需要使用QMainWindow的setStatusBar()函数。
在Qt里面,状态栏显示的信息有三种类型:临时信息、一般信息和永久信息。其中,临时信息指临时显示的信息,比如QAction的提示等,也可以设置自己的临时信息,比如程序启动之后显示Ready,一段时间后自动消失——这个功能可以使用QStatusBar的showMessage()函数来实现;一般信息可以用来显示页码之类的;永久信息是不会消失的信息,比如可以在状态栏提示用户Caps Lock键被按下之类。
QStatusBar继承自QWidget,因此它可以添加其他的QWidget。下面我们在QStatusBar上添加一个QLabel。
首先在class的声明中添加一个私有的QLabel属性:
qt 状态栏第1张private:
qt 状态栏第1张QAction *openAction;
qt 状态栏第1张QLabel *msgLabel;
然后在其构造函数中添加:
qt 状态栏第1张msgLabel =newQLabel;
qt 状态栏第1张msgLabel->setMinimumSize(msgLabel->sizeHint());
qt 状态栏第1张msgLabel->setAlignment(Qt::AlignHCenter);
qt 状态栏第1张
qt 状态栏第1张statusBar()->addWidget(msgLabel);
这里,第一行创建一个QLabel的对象,然后设置最小大小为其本身的建议大小——注意,这样设置之后,这个最小大小可能是变化的——最后设置显示规则是水平居中(HCenter)。最后一行使用statusBar()函数将这个label添加到状态栏。编译运行,将鼠标移动到工具条或者菜单的QAction上,状态栏就会有相应的提示:
qt 状态栏第9张
看起来是不是很方便?只是,我们很快发现一个问题:当没有任何提示时,状态栏会有一个短短的竖线:
qt 状态栏第10张
这是什么呢?其实,这是QLabel的边框。当没有内容显示时,QLabel只显示出自己的一个边框。但是,很多情况下我们并不希望有这条竖线,于是,我们对statusBar()进行如下设置:
qt 状态栏第1张statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}"));
这里先不去深究这句代码是什么意思,简单来说,就是把QStatusBar的子组件的border设置为0,也就是没有边框。现在再编译试试吧!那个短线消失了!
QStatusBar右下角的大小控制点可以通过setSizeGripEnabled()函数来设置是否存在,详情参见API文档。
好了,现在,我们的状态栏已经初步完成了。由于QStatusBar可以添加多个QWidget,因此,我们可以构建出很复杂的状态栏。

免责声明:文章转载自《qt 状态栏》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇机器学习 | 强化学习(5) | 价值函数拟合(Value Function Approximation)Elasticsearch 7.4.0 白金版 绿色教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

点击状态栏回到顶部两种实现

1.局部设置 scrollView有个属性scrollsToTop,默认值为YES. 所以默认情况下点击状态栏就可以回到顶部。但当一个控制器中有多个scrollView或其子类时,因为默认值都是YES,所以系统不知道要让哪个scrollView回到顶部。所以要让需要回到顶部的scrollView.scrollsToTop = YES,而其他的scrollV...

android 获取控件位置坐标,屏幕尺寸,标题栏,状态栏高度

1.屏幕尺寸,源代码如下: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int screenWidth=metrics.widthPixels; //屏幕宽度 int...

C# winform 获取标题栏,状态栏,菜单栏的高度

MessageBox.Show("当前窗体标题栏高度"+(this.Height - this.ClientRectangle.Height).ToString());//获得当前窗体标题栏高度 ClientRectangle//获取表示控件的工作区的矩形 MessageBox.Show(SystemInformation.PrimaryMo...

Android沉浸式状态栏实现

在安卓开发当中,顶部的状态栏很多时候是和我们自己所设定的安卓背景颜色不相同的,看起来就十分别扭,就如同下图所示,状态栏是深绿色,我们的背景却是一个十分好看的渐变颜色: 在使用沉浸式状态栏之后的界面如下: 如何将顶部的状态栏设置成透明的呢,我们可以在主活动的 onCreate() 方法当中输入以下代码: if(Build.VERSION.SDK_INT&g...

QMainWindow和QWidget

   一、QMainWindow   QmainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件。在主窗口中可以添加控件,比如将工具栏、菜单栏、状态栏等添加到布局管理器中。   窗口类型介绍:QMainWindow、QWidget、QDialog三个类都可以用来创建窗口,可以直接使用,也可以继承后使用。   QMainWi...

在PyQt中构建 Python 菜单栏、菜单和工具栏

摘要:菜单、工具栏和状态栏是大多数GUI 应用程序的常见且重要的图形组件。您可以使用它们为您的用户提供一种快速访问应用程序选项和功能的方法。 本文分享自华为云社区《Python 和 PyQt:创建菜单、工具栏和状态栏》,作者:Yuchuan。 在使用 Python 和PyQt开发图形用户界面 (GUI)应用程序时,您将使用的一些最有用和最通用的图形元素是...