进度条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_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值