随笔1(QAction与状态栏添加)
来源:互联网 发布:java compare返回值 编辑:程序博客网 时间:2024/05/22 08:26
QAction 包含了图标、菜单文字、快捷键、状态栏文字、浮动帮助等信息。当把一个 QAction 对象添加到程序中时,Qt 自己选择使用哪个属性来显示,无需我们关心。同时,Qt 能够保证把 QAction 对象添加到不同的菜单、工具栏时,显示内容是同步的。也就是说,如果我们在菜单中修改了 QAction 的图标,那么在工具栏上面这个 QAction 所对应的按钮的图标也会同步修改。
本文转载自:http://www.54xue.com/w/60/n-29560.html
状态栏位于主窗口的最下方,提供一个显示工具提示等信息的地方。一般地,当窗口不是最大化的时候,状态栏的右下角会有一个可以调节大小的控制点;当窗口最大化的时候,这个控制点会自动消失。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,因此,我们可以构建出很复杂的状态栏。
- 随笔1(QAction与状态栏添加)
- (6)为QAction添加事件响应
- QMainWindow(二) QAction
- QAction
- QAction
- QAction
- QAction
- QAction
- QAction
- android5.1状态栏添加一键截屏
- 添加状态栏
- 添加状态栏
- 为QMenu添加对QAction的tooltip的支持
- QT中QToolBar中如何添加QAction控件
- Essential Qt 第六章 记事本(三)添加图片,工具栏,状态栏与快捷键。
- 一个QAction的例子(转)
- 在对话框里添加状态栏(二)
- 在对话框里添加状态栏(一)
- Linux中关机命令详解
- NGINX LUA 边下载边发送文件内容
- HDU 1014 Uniform Generator
- HDU 4584
- UVA 11987 Almost Union-Find (并查集)
- 随笔1(QAction与状态栏添加)
- HDU 4585
- 时间的计算类CaculateDate
- poj 2112 (最大流+二分)
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- C++学习过程6
- hdu 4631(增量最近点对)
- Android全屏,在任意地方,不必在onCreate()时初始化全屏
- 正则表达式大全