【Qt】Qt窗口 | QStatusBar 状态栏

一. 状态栏

状态栏是应用程序中输出简要信息的区域,通常位于窗口的底部,用于显示应用程序的状态信息或提供用户与应用程序交互的反馈。一个窗口最多只能有一个状态栏,在Qt 中,通过 QStatusBar类 来实现的
常用显示的消息类型有:

  • 实时消息:如当前程序的状态
  • 永久消息:如程序版本号,机构名称
  • 进度消息:如进度条提示,百分百提示

二. 代码创建&使用状态栏

1. 创建状态栏

状态栏的创建有两种方法

  • 状态栏的创建是 QStatusBar类 的构造函数创建
  • 若窗口项目有自动生成 ui文件 ,则已经有一个菜单栏和状态栏,通过 QMainWindow类提供的 statusBar()获取状态栏
//QStatusBar *statusBar = new QStatusBar();//通过构造函数创建状态栏
QStatusBar *statusBar = this->statusBar();//获取状态栏
this->setStatusBar(statusBar);//设置状态栏

2. 在状态栏中显示实时消息

在状态栏中显示实时消息是通过QStatusBar类提供的 showMessage()实现的

statusBar->showMessage("这是一条状态栏消息");

运行结果如下:
在这里插入图片描述
showMessage()其原型函数如下:

void showMessage(const QString &text, int timeout = 0);

text 是显示的消息文本
timeout 是消息文本持续的时间,单位是毫秒,timeout = 3000代表文本持续3秒若设置为0代表持久显示

3. 在状态栏中显示控件

可添加到状态栏的常用控件有

  • QLabel 标签
  • QProgressBar 进度条
  • QPushButton 单选按钮
  • QCheckBox 复选框
  • QComboBox 组合框
  • QSlider 滑块

在状态栏添加控件的方法有

API说明
addWidget(QWidget widget, int stretch = 0);*从左往右添加控件,stretch是拉伸系数
*void addPermanentWidget(QWidget widget, int stretch = 0);从右往左添加控件,stretch是拉伸系数
*int insertWidget(int index, QWidget widget, int stretch = 0);从左往右插入控件,index是指定下标
*int insertPermanentWidget(int index, QWidget widget, int stretch = 0);从右往左插入控件,index是指定下标

添加标签,示例代码:

//添加标签
QLabel *label1 = new QLabel("标签信息1");
statusBar->addWidget(label1);//从左往右添加
QLabel *label2 = new QLabel("标签信息2");
statusBar->addPermanentWidget(label2);//从右往左添加

运行结果如下:
在这里插入图片描述


添加进度条,示例代码:

//添加进度条
QProgressBar *progressBar = new QProgressBar();
//初始化进度条
progressBar->setRange(0, 100);
progressBar->setValue(50);
statusBar->insertWidget(0, progressBar);

运行结果如下:
在这里插入图片描述

完整代码

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //QStatusBar *statusBar = new QStatusBar();//通过构造函数创建状态栏
    QStatusBar *statusBar = this->statusBar();//获取状态栏
    this->setStatusBar(statusBar);//设置状态栏
    //设置文本消息
    //statusBar->showMessage("这是一条状态栏消息", 3000);

    //添加标签
    QLabel *label1 = new QLabel("标签信息1");
    statusBar->addWidget(label1);//从左往右添加
    QLabel *label2 = new QLabel("标签信息2");
    statusBar->addPermanentWidget(label2);//从右往左添加
    //添加进度条
    QProgressBar *progressBar = new QProgressBar();
    //初始化进度条
    progressBar->setRange(0, 100);
    progressBar->setValue(50);
    statusBar->insertWidget(0, progressBar);
}

结束语
感谢你的阅读
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值