进度条控价,用来只是任务的完成情况
值
包括当前值、最大值、最小值
// 获取和设置当前值
int value() const;
void setValue(int);
// 获取和设置最大值
int maximum() const;
void setMaximum(int);
// 获取和设置最小值
int minimum() const;
void setMinimum(int);
// 一次设置最大值和最小值
void setRange(int min, int max)
// 复位当前值
void QProgressBar::reset()
最小值和最大值都为0时,进度条会显示一个繁忙状态,不会显示当前值
方向
分为水平和垂直
// 获取和设置滑动条的方向
Qt::Orientation orientation() const
void setOrientation(Qt::Orientation)
Qt::Orientation有两种取值
Qt::Horizontal
- 水平Qt::Vertical
- 垂直
外观
- 可以设置进度条的文本是否显示
// 获取和设置进度条的文本是否显示
bool isTextVisible() const
void setTextVisible(bool visible)
- 设置文本的显示位置
Qt::Alignment alignment() const
void setAlignment(Qt::Alignment alignment)
- 文本的显示格式
// 获取格式
QString format() const;
// 设置格式
void setFormat(const QString &format);
// 复位格式
void resetFormat()
其中有三种格式
%p
- 百分比%v
- 当前值%m
- 最大值
比如设置为%p,那么显示百分比,设置为%v/%m,那么显示50/100
- 进度条的进度增长方向
// 获取和设置是否外观反转
bool invertedAppearance() const
void setInvertedAppearance(bool invert)
常用信号
// 当进度条的值改变时,发射该信号
void valueChanged(int value)
举例
第三个进度条最大最小值一样,显示忙提示外观
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QTimer>
#include<QVBoxLayout>
#include<QProgressBar>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr): QWidget(parent)
{
resize(400,300);
QVBoxLayout* v_box=new QVBoxLayout(this);
//进度条1
QProgressBar* progress1=new QProgressBar(this);
progress1->setOrientation(Qt::Horizontal);//水平进度条
progress1->setRange(0,100);//范围0~100
progress1->setTextVisible(true);//设置显示文本
progress1->setFormat("%p%");//文本显示百分比
//progress1->setAlignment(Qt::AlignLeft);//文本靠右,win11下该接口不适用
progress1->setValue(0);//设置初始值
v_box->addWidget(progress1);
//进度条2
QProgressBar* progress2=new QProgressBar(this);
progress2->setOrientation(Qt::Horizontal);//水平进度条
progress2->setRange(0,100);//范围0~100
progress2->setTextVisible(true);//设置显示文本
progress2->setFormat("%v/%m");//文本显示例如:50/100
//progress2->setAlignment(Qt::AlignLeft);//文本居中
progress2->setInvertedAppearance(true);//进度条反向增长
progress1->setValue(0);//设置初始值
v_box->addWidget(progress2);
//进度条3
QProgressBar* progress3=new QProgressBar(this);
progress3->setOrientation(Qt::Horizontal);//水平进度条
progress3->setRange(0,0);//最大最小值都为0,则变成繁忙提示的外观,此时文本也不会显示了
//progress3->setTextVisible(true);//设置显示文本
v_box->addWidget(progress3);
static int num=0;
QTimer* timer=new QTimer(this);
connect(timer,&QTimer::timeout,this,[=](){
if(num==100)
{
num=-1;
}
++num;
progress1->setValue(num);
progress2->setValue(num);
});
timer->start(100);
}
~Widget()=default;
};
#endif // WIDGET_H
学习链接:https://github.com/0voice