1. 基本用法
- 作用:显示操作进度(如文件下载、数据处理等)。
- 创建:
QProgressBar *progressBar = new QProgressBar(parent);
2. 主要属性
属性 | 描述 | 方法示例 |
---|---|---|
范围 (Range) | 进度条的取值范围(默认 0-99) | setRange(min, max) |
当前值 (Value) | 当前进度值 | setValue(int) 或 value() |
文本格式 (Text) | 显示进度文本的格式 | setFormat("%p%") (默认显示百分比) |
方向 (Orientation) | 水平或垂直 | setOrientation(Qt::Vertical) |
文本可见性 | 是否显示进度文本 | setTextVisible(false) |
对齐方式 | 文本对齐方式 | setAlignment(Qt::AlignCenter) |
3. 常用方法
- 重置进度:
progressBar->reset();
- 设置不确定模式(无具体进度,如滚动条):
progressBar->setRange(0, 0); // 进入不确定模式 progressBar->setRange(0, 100); // 退出不确定模式
4. 进阶功能
样式定制
- 使用样式表(QSS)自定义外观:
progressBar->setStyleSheet("QProgressBar { border: 2px solid grey; border-radius: 5px; }""QProgressBar::chunk { background-color: #05B8CC; }" );
- 动态颜色:根据进度值改变颜色(需结合事件处理)。
信号与槽
- 进度值变化时触发信号:
connect(progressBar, &QProgressBar::valueChanged, [](int value) {qDebug() << "当前进度:" << value; });
5. 示例代码
// 创建进度条
QProgressBar *progressBar = new QProgressBar(this);
progressBar->setRange(0, 100);
progressBar->setValue(50);
progressBar->setFormat("已完成 %p%");
progressBar->setTextVisible(true);// 模拟进度更新(如通过定时器或线程)
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, [progressBar]() {int val = progressBar->value() + 1;if (val > 100) val = 0;progressBar->setValue(val);
});
timer->start(100);
6. 注意事项
- 线程安全:在子线程中更新进度条需通过信号槽机制,避免直接操作UI。
- 性能优化:频繁更新进度(如每1%更新一次)可能影响性能,可适当降低更新频率。
通过上述内容,可快速掌握 QProgressBar
的核心用法,并根据需求进行扩展定制。