ElaProgressBar 组件文档
概述
ElaProgressBar 是一个现代化的进度条组件,继承自 QProgressBar。它提供了主题适配、动画效果、忙碌状态等增强特性。
特性
- 主题适配
- 动画效果
- 忙碌状态
- 水平/垂直
- 圆角边框
- 平滑过渡
- 反向显示
- 自定义样式
属性继承
cpp
// 继承自 QProgressBar 的属性
Q_PROPERTY(int minimum READ minimum
WRITE setMinimum)
Q_PROPERTY(int maximum READ maximum
WRITE setMaximum)
Q_PROPERTY(int value READ value
WRITE setValue)
Q_PROPERTY(QString format READ format
WRITE setFormat)
Q_PROPERTY(Qt::Alignment alignment
READ alignment
WRITE setAlignment)
Q_PROPERTY(bool textVisible READ isTextVisible
WRITE setTextVisible)
Q_PROPERTY(Qt::Orientation orientation
READ orientation
WRITE setOrientation)
Q_PROPERTY(bool invertedAppearance
READ invertedAppearance
WRITE setInvertedAppearance)动画系统
忙碌动画
cpp
void paintEvent() {
if (minimum() == 0 && maximum() == 0) {
// 创建忙碌动画
QPropertyAnimation* busyAnimation =
new QPropertyAnimation(
style,
"busyStartValue"
);
busyAnimation->setDuration(2000);
busyAnimation->setLoopCount(-1);
busyAnimation->setStartValue(-75);
busyAnimation->setEndValue(width());
busyAnimation->start();
}
}样式系统
轨道样式
cpp
void drawControl(CE_ProgressBarGroove) {
// 绘制背景轨道
painter->setPen(Qt::NoPen);
painter->setBrush(chuteColor);
painter->drawRoundedRect(
rect, 3, 3);
}进度样式
cpp
void drawControl(CE_ProgressBarContents) {
// 绘制进度
painter->setPen(Qt::NoPen);
painter->setBrush(primaryColor);
if (busy) {
// 忙碌状态动画
painter->drawRoundedRect(
QRectF(startValue, y,
busyWidth, height),
3, 3);
} else {
// 正常进度
painter->drawRoundedRect(
QRectF(x, y,
width * ratio, height),
3, 3);
}
}使用示例
基础用法
1. 创建进度条
cpp
// 创建进度条
ElaProgressBar* bar =
new ElaProgressBar(this);
// 设置范围和值
bar->setMinimum(0);
bar->setMaximum(100);
bar->setValue(50);
// 设置方向
bar->setOrientation(Qt::Horizontal);2. 忙碌状态
cpp
// 设置为忙碌状态
bar->setMinimum(0);
bar->setMaximum(0);
// 恢复正常状态
bar->setMinimum(0);
bar->setMaximum(100);3. 反向显示
cpp
// 设置反向显示
bar->setInvertedAppearance(true);
// 显示文本
bar->setTextVisible(true);
bar->setFormat("%p%");注意事项
- 继承自 QProgressBar
- 自动处理主题切换
- 动画时长2000ms
- 智能内存管理
- 事件处理
- 性能优化
- 主题适配
- 样式继承
最佳实践
- 合理设置范围
- 平滑更新值
- 注意性能影响
- 统一交互方式
- 保持样式一致
- 动画流畅性
- 响应式布局
- 优化用户体验
相关组件
- QProgressBar: 基类
- ElaTheme: 主题管理
- QPropertyAnimation: 动画系统
- QProxyStyle: 样式系统