(动画)Qt控件 QProgressBar
文章目录
- QProgressBar
- 1. 介绍
- 一、基本特性
- 二、核心属性
- 2. 代码实现
- 3. 动画效果
QProgressBar
1. 介绍
QProgressBar是Qt框架中的一个控件,主要用于显示进度条,以图形化的方式表示任务的完成进度或操作的进度。
一、基本特性
- 显示方向:QProgressBar可以在水平或垂直方向上显示进度条。
- 范围设置:通过设置最小值和最大值来指定进度条的范围。
- 样式与行为:提供了一些方法和属性,可以方便地设置进度条的值、范围、样式等。
二、核心属性
属性 | 说明 |
---|---|
minimum | 进度条最⼩值 |
maximum | 进度条最⼤值 |
value | 进度条当前值 |
alignment | ⽂本在进度条中的对⻬⽅式. • Qt::AlignLeft : 左对⻬ • Qt::AlignRight : 右对⻬ • Qt::AlignCenter : 居中对⻬ • Qt::AlignJustify : 两端对⻬ |
textVisible | 进度条的数字是否可⻅ |
orientation | 进度条的⽅向是⽔平还是垂直 |
invertAppearance | 是否是朝反⽅向增⻓进度 |
textDirection | ⽂本的朝向 |
format | 展⽰的数字格式 %p :表⽰进度的百分⽐(0-100) %v :表⽰进度的数值(0-100) %m :表⽰剩余时间(以毫秒为单位) %t :表⽰总时间(以毫秒为单位) |
2. 代码实现
-
在界⾯上创建进度条, objectName 为 progressBar
其中最⼩值设为 0, 最⼤值设为 100. 当前值设为 0.
-
修改 widget.h, 创建 QTimer 和 updateProgressBar 函数.
QTimer* timer;
void updateProgressBar ();
- 修改 widget.cpp, 初始化 QTimer
• 此处设置 100ms 触发⼀次 timeout 信号. 也就是⼀秒钟触发 10 次.
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &Widget::updateProgressBar);
timer->start(100);
}
- 修改 widget.cpp, 实现 updateProgressBar
void Widget::updateProgressBar() {
int value = ui->progressBar->value();
if (value >= 100) {
timer->stop();
return;
}
ui->progressBar->setValue(value + 1);
}
整体代码
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimer>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);void updateProgressBar();~Widget();private:QTimer* timer;Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "./ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);timer = new QTimer(this);connect(timer, &QTimer::timeout, this, &Widget::updateProgressBar);timer->start(100);
}Widget::~Widget()
{delete ui;
}void Widget::updateProgressBar() {int value = ui->progressBar->value();if (value >= 100) {timer->stop();return;}ui->progressBar->setValue(value + 1);
}