【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt窗口 | 状态栏 | QStatusBar的使用及说明

文章编号:Qt 学习笔记 / 49

文章目录


一、状态栏

1. 什么是状态栏

状态栏是应⽤程序中输出简要信息的区域。⼀般位于主窗⼝的最底部,⼀个窗⼝中最多只能有⼀个状态栏。在 Qt 中,状态栏是通过 QStatusBar类 来实现的。

状态栏是指位于计算机屏幕顶部或移动设备屏幕顶部的一个区域,用于显示设备的当前状态信息和提供快捷操作功能。在计算机操作系统中,状态栏通常显示有关网络连接、电源、音量、通知等信息。

在状态栏中可以显⽰的消息类型有:

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

二、QStatusBar介绍

1. 简介

QStatusBar是Qt框架提供的一个小部件,用于在应用程序窗口底部显示状态信息。它可以显示一些固定的文本和图标,并且可以通过API动态更新显示内容。

QStatusBar可以用于显示应用程序的状态信息,如进度条、消息、错误提示等。它通常是一个水平的窗口部件,可以显示多行文本内容。使用QStatusBar,开发人员可以方便地在应用程序窗口底部显示状态信息,提高用户体验。

2. 常用属性

属性 说明
currentMessage 当前显示的文本消息。
可以使用setCurrentMessage()方法来设置。
sizeGripEnabled 是否显示大小调整控件。
默认情况下,状态栏右侧会显示一个大小调整的小部件,可以通过设置该属性为false来隐藏它。
visible 状态栏的可见性。
可以使用setVisible()方法来设置状态栏的可见性。
count 状态栏当前显示的小部件数量。
可以通过addWidget()方法添加小部件,并通过removeWidget()方法移除小部件。
maximumHeight 状态栏的最大高度。
可以使用setMaximumHeight()方法设置状态栏的最大高度。

3. 常用方法

方法 说明
showMessage() 显示一条文本消息。可以指定消息内容、显示时间和消息类型(例如,临时消息或永久消息)。
clearMessage() 清除当前显示的消息。
addWidget() 添加一个小部件到状态栏。可以添加QLabel、QProgressBar等小部件。
removeWidget() 移除状态栏上的指定小部件。
insertWidget() 在指定位置插入一个小部件到状态栏。
setStyleSheet() 设置状态栏的样式表。
setSizeGripEnabled() 设置是否显示大小调整控件。
setVisible() 设置状态栏的可见性。
heightForWidth() 根据宽度计算状态栏的高度。

三、代码创建状态栏

1. 创建状态栏

状态栏的创建是通过QMainWindow类提供的statusBar()函数来创建

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); //创建状态栏 QStatusBar* stbar =this->statusBar(); //设置到窗口中 this->setStatusBar(stbar); }

运行结果
此时状态栏中没有内容
在这里插入图片描述

2. 状态栏中显示实时信息

在状态栏中显⽰实时消息是通过showMessage()函数来实现

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); //创建状态栏 QStatusBar* stbar =this->statusBar(); //设置到窗口中 this->setStatusBar(stbar); //显示实时信息 stbar ->showMessage("Duck Bro",3000); //这里3000的意思是显示3秒 }

运行结果
"Duck Bro"在显示3秒后消失
在这里插入图片描述

3. 状态栏中显示文字(包含右侧显示文字)

在状态栏中可以显⽰永久消息,此处的永久消息是通过 标签 来显⽰的
通过向状态栏中插入label控件来达到实现显示永久消息
在这里插入图片描述

#include "mainwindow.h" #include "ui_mainwindow.h" #include<QLabel> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QStatusBar* stbar = this->statusBar(); this->setStatusBar(stbar); //创建label控件 QLabel* label = new QLabel("永久显示信息",this); //将标签设置到状态栏中 stbar->addWidget(label); //创建label控件 QLabel* label1 = new QLabel("右侧显示信息",this); //将标签设置到状态栏的右侧 stbar->addPermanentWidget(label1); } MainWindow::~MainWindow() { delete ui; }

运行结果
消息会永久显示,不会消失
在这里插入图片描述

4. 状态栏中显示进度条

同上述还可以插入其他控件,在这里演示插入进度条

#include "mainwindow.h" #include "ui_mainwindow.h" #include <QProgressBar> #include <QLabel> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QStatusBar* stbar = this->statusBar(); this->setStatusBar(stbar); QLabel * label = new QLabel("我是进度条",this); stbar->addWidget(label); QProgressBar * progressbar = new QProgressBar(); progressbar->setRange(0,100); progressbar->setValue(50); stbar->addWidget(progressbar); } MainWindow::~MainWindow() { delete ui; }

运行结果
在标签中插入进度条,设置0到100,当前值为50
在这里插入图片描述


在这里插入图片描述

本文是转载文章,点击查看原文
如有侵权,请联系 lx@jishuguiji.net 删除。