文章目录
- 一. 状态栏
- 二. 代码创建&使用状态栏
- 1. 创建状态栏
- 2. 在状态栏中显示实时消息
- 3. 在状态栏中显示控件
一. 状态栏
状态栏是应用程序中输出简要信息的区域,通常位于窗口的底部,用于显示应用程序的状态信息或提供用户与应用程序交互的反馈。一个窗口最多只能有一个状态栏,在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);
}
结束语
感谢你的阅读
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。