78Qt窗口_QStatusBar的基本使用
目录
3. 状态栏
3.1 状态栏的创建
3.2 在状态栏中显⽰实时消息
3.3 在状态栏中显⽰永久消息
调整显⽰消息的位置
添加多个子控件
3. 状态栏
状态栏是应⽤程序中输出简要信息的区域。⼀般位于主窗⼝的最底部,⼀个窗⼝中最多只能有⼀个状 态栏。在 Qt 中,状态栏是通过 QStatusBar类 来实现的。 在状态栏中可以显⽰的消息类型有:
• 实时消息:如当前程序状态
• 永久消息:如程序版本号,机构名称
• 进度消息:如进度条提⽰,百分百提⽰
3.1 状态栏的创建
状态栏的创建是通过 QMainWindow 类 提供的 statusBar() 函数来创建;⽰例如下:
// 存在就获取, 不存在就创建QStatusBar* statusBar = this->statusBar();// 如果状态栏没有被创建, 这样的设置是必要的.// 如果状态栏已经在窗口中存在, 这样的设置其实意义不大, 但是也没副作用. 仍然保留.this->setStatusBar(statusBar);
3.2 在状态栏中显⽰实时消息
在状态栏中显⽰实时消息是通过 showMessage() 函数来实现,⽰例如下:
// 显示一个临时的信息,状态栏中显示大约2秒statusBar->showMessage("这是一个状态消息", 2000);
通过showMessage可以在状态栏中显示一个文本.
此时这个文本存在的时间可以自定义.timeout参数是一个单位为ms的时间.
如果timeout为0(不填),消息就会持久存在~~

3.3 在状态栏中显⽰永久消息
在状态栏中可以显⽰永久消息,此处的永久消息是通过 标签 来显⽰的;⽰例如下:
状态栏中还可以添加其他控件~~
// 给状态栏中添加子控件QLabel* label = new QLabel("这是一个 QLabel提示消息");statusBar->addWidget(label);
调整显⽰消息的位置
// 给状态栏中添加子控件QLabel* label = new QLabel("这是一个 QLabel提示消息");statusBar->addWidget(label);// 给状态栏右侧中添加子控件QLabel* label2 = new QLabel("这是一个 右侧QLabel提示消息");statusBar->addPermanentWidget(label2);

添加多个子控件


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QProgressBar>
#include <QPushButton>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 存在就获取, 不存在就创建QStatusBar* statusBar = this->statusBar();// 如果状态栏没有被创建, 这样的设置是必要的.// 如果状态栏已经在窗口中存在, 这样的设置其实意义不大, 但是也没副作用. 仍然保留.this->setStatusBar(statusBar);// 显示一个临时的信息,状态栏中显示大约2秒
// statusBar->showMessage("这是一个状态消息", 2000);// 给状态栏中添加子控件QLabel* label = new QLabel("这是一个 QLabel提示消息");statusBar->addWidget(label);// 给状态栏右侧中添加子控件QLabel* label2 = new QLabel("这是一个 右侧QLabel提示消息");statusBar->addPermanentWidget(label2);QProgressBar* progressBar = new QProgressBar();progressBar->setRange(0, 100);progressBar->setValue(50);statusBar->addWidget(progressBar);QPushButton* pushButton = new QPushButton("按钮");statusBar->addWidget(pushButton);}MainWindow::~MainWindow()
{delete ui;
}
注意:
statusBar->showMessage("这是一个状态消息", 2000);和// 给状态栏中添加子控件QLabel* label = new QLabel("这是一个 QLabel提示消息");statusBar->addWidget(label);不能同时显示,只能显示一种