Qt进修之路(14):状态栏
本日的内容主要照旧继承完善前面的谁人措施。我们要为我们的措施加上一个状态栏。
状态栏位于主窗口的最下方,提供一个显示东西提示等信息的处所。一般地,当窗口不是最大化的时候,状态栏的右下角会有一个可以调理巨细的节制点;当窗口最大化的时候,这个节制点会自动消失。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属性:
private:
QAction *openAction;
QLabel *msgLabel;
然后在其结构函数中添加:
msgLabel = new QLabel;
msgLabel->setMinimumSize(msgLabel->sizeHint());
msgLabel->setAlignment(Qt::AlignHCenter);
statusBar()->addWidget(msgLabel);
这里,第一行建设一个QLabel的工具,然后配置最小巨细为其自己的发起巨细——留意,这样配置之后,这个最小巨细大概是变革的——最后配置显示法则是程度居中(HCenter)。最后一行利用statusBar()函数将这个label添加到状态栏。编译运行,将鼠标移动到东西条可能菜单的 QAction上,状态栏就会有相应的提示:
看起来是不是很利便?只是,我们很快发明一个问题:当没有任何提示时,状态栏会有一个短短的竖线:
这是什么呢?其实,这是QLabel的边框。当没有内容显示时,QLabel只显示出本身的一个边框。可是,许多环境下我们并不但愿有这条竖线,于是,我们对statusBar()举办如下配置:
statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}"));
这里先不去深究这句代码是什么意思,简朴来说,就是把QStatusBar的子组件的border配置为0,也就是没有边框。此刻再编译试试吧!谁人短线消失了!
QStatusBar右下角的巨细节制点可以通过setSizeGripEnabled()函数来配置是否存在,详情拜见API文档。
好了,此刻,我们的状态栏已经劈头完成了。由于QStatusBar可以添加多个QWidget,因此,我们可以构建出很巨大的状态栏。
出处:http://devbean.blog.51cto.com/448512/210947