在使用Qt开发客户端时,有时需要在底部状态栏显示一些信息,但是默认的statusBar并不能满足需求,此时,我们可以在statusBar上添加自定义控件,实现相应需求。
可以去看看QStatusBar的声明,代码如下:

class Q_WIDGETS_EXPORT QStatusBar: public QWidget
{Q_OBJECTQ_PROPERTY(bool sizeGripEnabled READ isSizeGripEnabled WRITE setSizeGripEnabled)public:explicit QStatusBar(QWidget *parent = nullptr);virtual ~QStatusBar();void addWidget(QWidget *widget, int stretch = 0);int insertWidget(int index, QWidget *widget, int stretch = 0);void addPermanentWidget(QWidget *widget, int stretch = 0);int insertPermanentWidget(int index, QWidget *widget, int stretch = 0);void removeWidget(QWidget *widget);void setSizeGripEnabled(bool);bool isSizeGripEnabled() const;QString currentMessage() const;public Q_SLOTS:void showMessage(const QString &text, int timeout = 0);void clearMessage();Q_SIGNALS:void messageChanged(const QString &text);protected:void showEvent(QShowEvent *) override;void paintEvent(QPaintEvent *) override;void resizeEvent(QResizeEvent *) override;void reformat();void hideOrShow();bool event(QEvent *) override;private:Q_DISABLE_COPY(QStatusBar)Q_DECLARE_PRIVATE(QStatusBar)
};

QStatusBar派生于QWidget, 其提供了如下方法:

  • addWidget:添加widget, 第二个参数表示是否拉伸,那么,该函数可以传入一切QWidget及其子类,例如QLabel、QPushButton、QWidget等;
  • insertWidget:插入widget
  • currentMessage: 获取当前显示的消息
  • 信号messageChanged:显示的内容改变时会除法该信号

下面的代码将演示如何在statusBar上添加3个Label控件, 新建一个基于QMainWindow的项目.
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QLabel>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;QLabel* pLabel1_ = nullptr;QLabel* pLabel2_ = nullptr;QLabel* pLabel3_ = nullptr;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);pLabel1_ = new QLabel(u8"标签1:");pLabel1_->setMinimumWidth(200);statusBar()->addWidget(pLabel1_);pLabel2_ = new QLabel(u8"标签2:");pLabel2_->setMinimumWidth(200);statusBar()->addWidget(pLabel2_);pLabel3_ = new QLabel(u8"标签3:");pLabel3_->setMinimumWidth(200);statusBar()->addWidget(pLabel3_);
}MainWindow::~MainWindow()
{delete ui;
}

运行效果

可以看到在状态栏上添加了3个label, 调用addWidget即可实现,如果需要拉伸控件,则把第二个参数设为1.

QMainWindow statusBar如何添加控件相关推荐

  1. .NET中添加控件数组

    作者:cuike519的专栏   http://blog.csdn.net/cuike519/ 添加控件数组 在.NET里面我好像没有找到有关于控件数组的说明,但是前两天偶在网上看到了一篇关于如何在. ...

  2. asp.net动态添加控件学习

    看了老师的教程后,自己一点感悟记录下来: 1.在页面提交后,动态生成的控件会丢失, 但如果生成控件的代码在pageload中,就可以,原理是每次生成页面都执行生成. 2.动态按件或页面原来控件, 在页 ...

  3. 在VS2010/MFC中如何对对话框添加控件

    创建对话框资源需要创建对话框模板.修改对话框属性.为对话框添加各种控件等步骤.而如何为对话框添加控件直接影响到界面的美观和开发人员的工作效率.本人将为大家介绍如何为对话框添加控件的详细步骤. 方法/步 ...

  4. Silverlight中使用控件模板的问题(自己添加控件的方法)

    在一步一步学Silverlight 2系列(9):使用控件模板中 WatermarkedTextBox控件可以为用户的输入提供一段提示信息,如果只是简单的一点文字信息,有时候未免显得单调,如果加上相应 ...

  5. 动态添加综合布局---动态添加控件及将某XML动态加入到Activity显示(续)

    前言:以前曾写过一篇关于动态生成控件的文章<动态添加控件及将某XML动态加入到Activity显示>,比较浅显,对于RelativeLayout的相关布局设置方法及相对布局与线性布局的混合 ...

  6. 动态添加控件及将某XML动态加入到Activity显示

    一.动态添加控件.设置参数 这个难度比较大,放在前面讲,用的也比较多,普通情况下,我们会提前把布局XML写好,然后对XML中的元素进行设置,但这种方法在有些情况下就显得不适合,比较聊天应用,比如帖子的 ...

  7. js 对表格的动态操作(动态添加行,删除该行,在指定位置添加控件)

    ***************************************************************** js动态添加表的列,并在列中添加控件的方法<html> ...

  8. IOS代码添加控件,控件移动,放大,缩小,旋转

    控件移动,放大,缩小,旋转 1,代码添加控件 例如: [objc] view plaincopy /* 1.创建一个控件 2.设置控件的位置,大小 3.设置控件所需要的各个属性 4.添加入父控件 5. ...

  9. vb 用代码添加控件

    vb 代码添加控件http://49840.w5w5.info/work_xx.asp?works_id=10 转载于:https://blog.51cto.com/yuzhen/606447

最新文章

  1. Java 20年:JVM虚拟化技术的发展
  2. miniUI怎么显示HTML显示整数,MINIUI后台获取数据
  3. Android stadio Switch repository Android stadio切换仓库
  4. 搞Java的年薪 40W 是什么水平?
  5. 网络编程(part1)--IO及字节串
  6. 笔试知识点 网络安全_安全点
  7. [转]深入理解Java之线程池
  8. 编程语言不仅仅是工具而已
  9. 【Flutter】IOS打包
  10. 初生牛犊不怕虎,管他呢! 干就是了。
  11. 快速将非Word中的不可编辑的公式转换为Word文档中公式编辑器里可编辑的公式的办法
  12. [题解][Codeforces 1139A~1139F]Codeforces Round #548 (Div. 2) 简要题解
  13. JDK12 ShenandoahGC小试牛刀
  14. 在线URLEncode/URLDecode网址
  15. 股票北向资金数据接口在哪里?
  16. php实现的单例模式
  17. 安装elasticsearch8.0.1之后无法访问9200:Empty reply from server
  18. sip客户端源码c语言,SIP客户端选型
  19. z3735f android x86,随大流,也装了个z3735f的小主机(1223更新功耗图)
  20. mysql 日期转周_Mysql 日期转换星期

热门文章

  1. 英特尔hd630驱动_HD 630和驱动程序的兼容性问题
  2. 销售、售前、项目实施不同的培训要求
  3. HIT_SC:实验回顾 - Lab3
  4. spring 锁机制
  5. latent variable理解
  6. JQuery 动态显示和隐藏(动画)
  7. apache windows .msi 安装版下载
  8. hdu 5655 CA Loves Stick
  9. 电脑无法读取硬盘解决方法
  10. 社会人员计算机考试成绩查询,专业技术人员考试成绩可用电子社保卡查询啦!...