Qt窗口 | 状态栏 | QStatusBar的使用及说明
一、状态栏
1. 什么是状态栏
状态栏是应⽤程序中输出简要信息的区域。⼀般位于主窗⼝的最底部,⼀个窗⼝中最多只能有⼀个状态栏。在 Qt 中,状态栏是通过 QStatusBar类 来实现的。
状态栏是指位于计算机屏幕顶部或移动设备屏幕顶部的一个区域,用于显示设备的当前状态信息和提供快捷操作功能。在计算机操作系统中,状态栏通常显示有关网络连接、电源、音量、通知等信息。
在状态栏中可以显⽰的消息类型有:
- 实时消息:如当前程序状态
- 永久消息:如程序版本号,机构名称
- 进度消息:如进度条提⽰,百分百提⽰
二、QStatusBar介绍
1. 简介
QStatusBar是Qt框架提供的一个小部件,用于在应用程序窗口底部显示状态信息。它可以显示一些固定的文本和图标,并且可以通过API动态更新显示内容。
QStatusBar可以用于显示应用程序的状态信息,如进度条、消息、错误提示等。它通常是一个水平的窗口部件,可以显示多行文本内容。使用QStatusBar,开发人员可以方便地在应用程序窗口底部显示状态信息,提高用户体验。
2. 常用属性
3. 常用方法
三、代码创建状态栏
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