18、QProgressBar

 属性和方法

复制代码
// 获取和设置当前值
int value() const;
void setValue(int);

// 获取和设置最大值
int maximum() const;
void setMaximum(int);

//获取和设置最小值
int minimum() const;
void setMinimum(int);

//一次性设置最大值最小值
void setRage(int min,int max);

//复位当前值
void QProgressBar::reset();
复制代码

 

方向

Qt中进度条有水平滚动条和垂直滚动条之分

// 获取和设置滚动条的方向
Qt::Qrientation orientation() const;
void setOrientation(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-最大值

还可以设置进度条增长方向

//设置进度条增长方式
bool inveredAppearance() const;
void setInvertedAppearance(bool invert);

通常进度条进度的增长方向从左到右

而外观反转,将进度条的进度增长方向修改为从右到左。

信号槽

// 当进度条的值改变时,发射信号
void valueChanged(int value);

 举例

 

复制代码
#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{

    ui->setupUi(this);

    ui->pbDownLoad->setRange(0,100);
    ui->pbDownLoad->setValue(0);
    // 文本靠右
    //ui->pbDownLoad->setAlignment(Qt::AlignLeft);


    ui->pbCopy->setMaximum(1000);
    ui->pbCopy->setMinimum(0);

    ui->pbNetWork->setValue(0);
    ui->pbNetWork->setRange(0,0);


    mTimerDownload=new QTimer(this);
    mTimerDownload->setInterval(100);

    mTimerCopy=new QTimer(this);
    mTimerCopy->setInterval(10);

    connect(ui->btn_download,SIGNAL(clicked()),this,SLOT(onBtnDownloadClicked()));
//    connect(ui->btn_download,&QPushButton::clicked,this,&Widget::onBtnDownloadClicked);
    connect(ui->btn_copy,SIGNAL(clicked()),this,SLOT(onBtnCopyClicked()));

    connect(mTimerDownload,SIGNAL(timeout()),this,SLOT(onDownloadTimeout()));
//    connect(mTimerDownload,&QTimer::timeout,this,&Widget::onDownloadTimeout);
    connect(mTimerCopy,&QTimer::timeout,this,&Widget::onCopyTimeout);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::onBtnDownloadClicked()
{
    qDebug() << "下载";
    // 启动定时器
    mTimerDownload->start();

}

void Widget::onDownloadTimeout()
{
    int currentValue=ui->pbDownLoad->value();
    if(currentValue >= ui->pbDownLoad->maximum()){
        mTimerDownload->stop();
        QMessageBox::information(this,"提示","文件下载完成");
    }else{
        ui->pbDownLoad->setValue(currentValue + 1);
        qDebug() << currentValue + 1;
    }
}

void Widget::onBtnCopyClicked()
{
mTimerCopy->start();
}

void Widget::onCopyTimeout()
{
    int currentValue=ui->pbCopy->value();
    if(currentValue >= ui->pbCopy->maximum()){
        mTimerCopy->stop();
        QMessageBox::information(this,"提示","文件复制完成");
    }else{
        ui->pbCopy->setValue(currentValue + 1);
        qDebug() << currentValue + 1;
    }
}
复制代码

 

posted @   秃头的C#  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示