`
izuoyan
  • 浏览: 9221849 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Qt学习之路(14): 状态栏

阅读更多
版权声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/210947
有段时间没有写过博客了。假期去上海旅游,所以一直没有能够上网。现在又来到这里,开始新的篇章吧!
今天的内容主要还是继续完善前面的那个程序。我们要为我们的程序加上一个状态栏。
状态栏位于主窗口的最下方,提供一个显示工具提示等信息的地方。一般地,当窗口不是最大化的时候,状态栏的右下角会有一个可以调节大小的控制点;当窗口最大化的时候,这个控制点会自动消失。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

分享到:
评论

相关推荐

    QT学习之路2-2020整理版(更新到94章)(pdf)

    《QT学习之路2-2020整理版》是一份详尽的QT开发教程,涵盖了从基础到进阶的多个方面。这份资料基于豆子大佬的博客内容进行整理,不仅包含原有的79章,还增加了豆子在2016年3月11日后更新的15章内容,共计94章,旨在...

    《Qt 学习之路 2》

    《Qt学习之路2》不仅介绍了MainWindow等GUI组件的使用方法,还深入探讨了布局管理器、菜单栏、工具栏和状态栏的设置,这些都是构建复杂用户界面不可或缺的部分。 对于Qt的绘图系统,该书也进行了详细的介绍,包括画...

    Qt 学习之路:DZY

    ### Qt学习之路:核心知识点概览 #### 一、前言 - **Qt简介**:Qt是一个跨平台的C++图形用户界面应用程序开发框架。它不仅支持Windows、macOS、Linux等主流操作系统,还能用于开发嵌入式系统、移动设备应用(如...

    Qt学习之路2

    在深入探讨文档内容前,需明确“Qt学习之路2”这篇文档的主要目的是指导初学者如何学习和掌握Qt框架,这是一个广泛应用于软件开发中的跨平台C++图形用户界面应用程序框架。文档由Andy_Liu整理,包含了大量的章节,从...

    QT学习之路

    标题《QT学习之路》指明了文档的主要内容,即向读者介绍如何学习Qt这一跨平台的C++图形用户界面应用程序开发框架。Qt是一个功能强大的工具,能够用来开发具有图形用户界面的应用程序,并且支持多种操作系统平台,如...

    Qt+学习之路+2

    - **背景**: 本文档是基于作者之前的一个系列教程——《Qt学习之路》的更新版本,旨在适应Qt的新版本和发展趋势。 - **目的**: 更新和完善原有教程内容,使其更适合Qt 4.x和即将到来的Qt 5的学习需求。 - **定位**: ...

    QT学习之路2.pdf

    ### Qt学习之路2.pdf知识点概览 #### 一、序言 - **背景介绍**:本书作为《Qt学习之路》的第二版,旨在为读者提供更深入、更系统的Qt编程学习指南。书中提及51CTO网站上的入门教程,该教程基于《C++ GUI ...

    qt学习之路.pdf

    《Qt学习之路》是一份适合初学者的Qt入门教程,内容包括基础知识点到较为深入的GUI开发技术。其内容丰富,讲解细致,旨在帮助开发者从零开始,逐步深入掌握Qt框架,最终能够独立编写跨平台的应用程序。 1. 前言 ...

    QT学习之路2 (1~82篇)

    12. 菜单栏、工具栏和状态栏 13. 对话框简介 14. 对话框数据传递 15. 标准对话框 QMessageBox 16. 深入 Qt5 信号槽新语法 17. 文件对话框 18. 事件 19. 事件的接受与忽略 20. event() 21. 事件过滤器 22. 事件总结 ...

    PyQt5学习(一):制作菜单、工具条,并在状态栏中动态显示实时时间

    学习了PyQt5制作菜单和工具条,期间遇到一些问题,现在都一一解决了...设置了两个标签,作为状态栏的显示。一个是显示按钮的操作状态,一个是实时更新时间 ​ '''初始化界面''' def InitGUI(self): self.resize(800

    Qt5学习之路2

    《Qt学习之路2》是一份全面介绍Qt开发的教程,旨在帮助读者从基础知识逐步过渡到Qt的高级特性,让初学者能够快速上手Qt开发,并为有经验的开发者提供深入学习的机会。通过对Qt4和Qt5两个版本的比较,本教程帮助读者...

    Qt 自定义导航栏

    在Qt开发中,自定义导航栏是一项常见的任务,它能够为应用程序提供更加直观且具有特色的用户界面。本文将深入探讨如何在Qt中实现自定义导航栏,并分享一个使用案例,帮助开发者创建美观、易用的树形导航结构。 首先...

    qt之简易画板

    QMainWindow提供了菜单栏、工具栏和状态栏的集成,便于扩展功能。 1. **初始化项目** - 使用Qt Creator创建一个新的Qt Widgets Application项目。 - 在.pro文件中,确保包含必要的库,如`QT += widgets gui`。 2...

    QT学习(2)-qt的菜单和工具栏,状态栏、浮动窗口

    QT学习(2)——qt的菜单和工具栏,状态栏、浮动窗口

    Qt学习之路

    ### Qt学习之路知识点详解 #### 一、前言:Qt简介及优势 - **Qt**是一种跨平台的应用程序开发框架,主要使用C++语言编写,同时也支持Qt Quick和QML来构建用户界面。Qt框架提供了丰富的API,可以用于开发桌面应用、...

    Qt5实现自定义标题栏

    在Qt中,`QMainWindow`是通常用于构建带有菜单栏、工具栏和状态栏的复杂窗口的主要类。然而,它的默认标题栏是由操作系统提供的,样式和功能受到限制。为了自定义标题栏,我们需要覆盖或隐藏默认的标题栏,并创建一...

    Qt学习之路2 (基于Qt5.0.1共58章)

    12. 菜单栏、工具栏和状态栏 13. 对话框简介 14. 对话框数据传递 15. 标准对话框 QMessageBox 16. 深入 Qt5 信号槽新语法 17. 文件对话框 18. 事件 19. 事件的接受与忽略 20. event() 21. 事件过滤器 22. 事件总结 ...

Global site tag (gtag.js) - Google Analytics