Chinaunix首页 | 论坛 | 博客
  • 博客访问: 126171
  • 博文数量: 46
  • 博客积分: 571
  • 博客等级: 准尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-26 23:57
文章分类

全部博文(46)

文章存档

2012年(46)

我的朋友

分类: C/C++

2012-05-04 12:42:25

C++ Qt 08:文本编辑器——状态栏

摘自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()));

 

编译运行:

clip_image001

但我们发现一个问题:当没有任何提示时,状态栏会有一个短短的竖线,其实,这是QLabel的边框。当没有内容显示时,QLabel只显示出自己的一个边框。但是,很多情况下我们并不希望有这条竖线,于是,我们对statusBar()进行如下设置,把QStatusBar的子组件的border设置为0,也就是没有边框:

statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}"));

同样的方法可将其他的菜单也添加状态栏提示。

 

 

 

作者
出处:http://rophie.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

阅读(1061) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~