Skip to content

ElaScrollArea 组件文档

概述

ElaScrollArea 是一个现代化的滚动区域组件,继承自 QScrollArea。它提供了平滑滚动、手势支持、动画效果等特性。

特性

  • 平滑滚动
  • 手势支持
  • 动画效果
  • 回弹效果
  • 透明背景
  • 自定义滚动条
  • 触摸支持
  • 性能优化

公共方法

手势设置

cpp
// 启用/禁用手势
void setIsGrabGesture(
    bool isEnable, 
    qreal mousePressEventDelay = 0.5
);

// 设置回弹效果
void setIsOverShoot(
    Qt::Orientation orientation, 
    bool isEnable
);

// 获取回弹状态
bool getIsOverShoot(
    Qt::Orientation orientation
) const;

// 设置动画效果
void setIsAnimation(
    Qt::Orientation orientation, 
    bool isAnimation
);

// 获取动画状态
bool getIsAnimation(
    Qt::Orientation orientation
) const;

使用示例

基础用法

1. 创建滚动区域

cpp
// 创建滚动区域
ElaScrollArea* area = 
    new ElaScrollArea(this);

// 设置内容部件
QWidget* content = new QWidget();
area->setWidget(content);

// 设置透明背景
area->setStyleSheet(
    "background:transparent;"
);

2. 手势设置

cpp
// 启用手势
area->setIsGrabGesture(true);

// 设置手势延迟
area->setIsGrabGesture(true, 0.5);

// 设置回弹效果
area->setIsOverShoot(
    Qt::Vertical, true
);
area->setIsOverShoot(
    Qt::Horizontal, true
);

3. 动画设置

cpp
// 启用垂直动画
area->setIsAnimation(
    Qt::Vertical, true
);

// 启用水平动画
area->setIsAnimation(
    Qt::Horizontal, true
);

// 获取动画状态
bool hasVerticalAnimation = 
    area->getIsAnimation(Qt::Vertical);

高级用法

1. 滚动属性设置

cpp
// 获取滚动器
QScroller* scroller = 
    QScroller::scroller(
        area->viewport()
    );

// 设置滚动属性
QScrollerProperties props = 
    scroller->scrollerProperties();

// 设置回弹阻力
props.setScrollMetric(
    QScrollerProperties::
    OvershootDragResistanceFactor, 
    0.35
);

// 设置回弹时间
props.setScrollMetric(
    QScrollerProperties::
    OvershootScrollTime, 
    0.5
);

// 设置帧率
props.setScrollMetric(
    QScrollerProperties::Fps60,
    QScrollerProperties::FrameRate
);

// 应用属性
scroller->setScrollerProperties(props);

注意事项

  1. 继承自 QScrollArea
  2. 自动处理主题切换
  3. 智能内存管理
  4. 事件处理
  5. 性能优化
  6. 主题适配
  7. 样式继承
  8. 手势支持

最佳实践

  1. 合理设置大小
  2. 控制内容大小
  3. 优化滚动体验
  4. 注意性能
  5. 统一交互
  6. 保持一致
  7. 动画流畅
  8. 响应式布局

相关组件

  • QScrollArea: 基类
  • ElaScrollBar: 滚动条组件
  • QScroller: 滚动系统
  • QScrollerProperties: 滚动属性