2012年(46)
分类: C/C++
2012-05-04 12:42:25
摘自:http://www.cnblogs.com/rophie/archive/2012/04/06/2435170.html
今天的内容主要还是继续完善前面的那个程序。我们要为我们的程序加上一个状态栏,Qt提供了一个QStatusBar类来实现状态栏。在Qt里面,状态栏显示的信息有三种类型:临时信息、一般信息和永久信息。其中,临时信息指临时显示的信息,比如QAction的提示等;永久信息是不会消失的信息,比如可以在状态栏提示用户Caps Lock键被按下之类。
首先我们来让状态栏上显示我们的菜单提示信息,要在状态栏上加入一个QLabel。
1 private:
2 void FileActions();
3
4 QLabel *menuLabel;
然后在其构造函数中添加:
1 menuLabel=new QLabel;
2 menuLabel->setMinimumSize (menuLabel->sizeHint ());
3 menuLabel->setAlignment (Qt::AlignHCenter);
4 statusBar ()->addWidget (menuLabel);
这里,第一行创建一个QLabel的对象,然后设置最小大小为其本身的建议大小——注意,这样设置之后,这个最小大小可能是变化的——最后设置显示规则是水平居中(HCenter)。最后一行使用statusBar()函数将这个label添加到状态栏。
接下来在要提示的菜单处设置菜单的提示文字,比如新建菜单
1 QAction *f;
2 f=new QAction(QObject::tr ("新建(&N)"),this);
3 f->setShortcut(QKeySequence::New);
4 fileMenu->addAction (f);
5 f->setIcon (QIcon(":/icons/filenew"));
6 f->setStatusTip (QObject::tr ("新建一个文件"));//设置状态栏提示文字为:“新建一个文件”
7 fileToolBar->addAction (f);
8 connect (f,SIGNAL(triggered()),this,SLOT(fileNew()));
编译运行:
但我们发现一个问题:当没有任何提示时,状态栏会有一个短短的竖线,其实,这是QLabel的边框。当没有内容显示时,QLabel只显示出自己的一个边框。但是,很多情况下我们并不希望有这条竖线,于是,我们对statusBar()进行如下设置,把QStatusBar的子组件的border设置为0,也就是没有边框:
statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}"));
同样的方法可将其他的菜单也添加状态栏提示。
作者:荒 木
出处:http://rophie.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。