Skip to content

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%");

注意事项

  1. 继承自 QProgressBar
  2. 自动处理主题切换
  3. 动画时长2000ms
  4. 智能内存管理
  5. 事件处理
  6. 性能优化
  7. 主题适配
  8. 样式继承

最佳实践

  1. 合理设置范围
  2. 平滑更新值
  3. 注意性能影响
  4. 统一交互方式
  5. 保持样式一致
  6. 动画流畅性
  7. 响应式布局
  8. 优化用户体验

相关组件

  • QProgressBar: 基类
  • ElaTheme: 主题管理
  • QPropertyAnimation: 动画系统
  • QProxyStyle: 样式系统