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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧