进度条QProgressBar
进度条控价,用来只是任务的完成情况
值
包括当前值、最大值、最小值
// 获取和设置当前值
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_OBJECTpublic:Widget(QWidget *parent = nullptr): QWidget(parent){resize(400,300);QVBoxLayout* v_box=new QVBoxLayout(this);//进度条1QProgressBar* progress1=new QProgressBar(this);progress1->setOrientation(Qt::Horizontal);//水平进度条progress1->setRange(0,100);//范围0~100progress1->setTextVisible(true);//设置显示文本progress1->setFormat("%p%");//文本显示百分比//progress1->setAlignment(Qt::AlignLeft);//文本靠右,win11下该接口不适用progress1->setValue(0);//设置初始值v_box->addWidget(progress1);//进度条2QProgressBar* progress2=new QProgressBar(this);progress2->setOrientation(Qt::Horizontal);//水平进度条progress2->setRange(0,100);//范围0~100progress2->setTextVisible(true);//设置显示文本progress2->setFormat("%v/%m");//文本显示例如:50/100//progress2->setAlignment(Qt::AlignLeft);//文本居中progress2->setInvertedAppearance(true);//进度条反向增长progress1->setValue(0);//设置初始值v_box->addWidget(progress2);//进度条3QProgressBar* 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