Skip to content

ElaTreeView 组件文档

概述

ElaTreeView 是一个现代化的树形视图组件,继承自 QTreeView。它提供了自定义样式、动画效果、主题适配等特性。

特性

  • 自定义样式
  • 动画效果
  • 主题适配
  • 展开/收起
  • 选中特效
  • 滚动优化
  • 缩进控制
  • 性能优化

属性

基础属性

cpp
// 项目高度
Q_PROPERTY(int itemHeight 
    READ getItemHeight 
    WRITE setItemHeight)

// 表头边距
Q_PROPERTY(int headerMargin 
    READ getHeaderMargin 
    WRITE setHeaderMargin)

样式系统

项目样式

cpp
void drawPrimitive(PE_PanelItemViewItem) {
    // 背景绘制
    if (state & State_Selected) {
        if (state & State_MouseOver) {
            painter.fillPath(path, selectedHoverColor);
        } else {
            painter.fillPath(path, selectedColor);
        }
    } else if (state & State_MouseOver) {
        painter.fillPath(path, hoverColor);
    }
}

展开指示器

cpp
void drawPrimitive(PE_IndicatorBranch) {
    if (state & State_Children) {
        // 设置字体
        painter.setFont("ElaAwesome");
        
        // 绘制图标
        painter.drawText(
            rect,
            state & State_Open ? 
                AngleDown : AngleRight
        );
    }
}

选中特效

cpp
void drawControl(CE_ItemViewItem) {
    // 绘制选中指示器
    if (state & State_Selected) {
        painter.setBrush(primaryColor);
        painter.drawRoundedRect(
            indicator, radius, radius
        );
    }
}

使用示例

基础用法

1. 创建树形视图

cpp
// 创建视图
ElaTreeView* treeView = 
    new ElaTreeView(this);

// 设置模型
treeView->setModel(model);

// 设置动画
treeView->setAnimated(true);

2. 外观设置

cpp
// 设置项目高度
treeView->setItemHeight(35);

// 设置表头边距
treeView->setHeaderMargin(5);

// 设置缩进
treeView->setIndentation(20);

// 设置表头字体
QFont headerFont = 
    treeView->header()->font();
headerFont.setPixelSize(16);
treeView->header()->setFont(headerFont);

3. 滚动设置

cpp
// 创建滚动条
ElaScrollBar* scrollBar = 
    new ElaScrollBar(treeView);
scrollBar->setIsAnimation(true);

// 设置滚动条
treeView->setVerticalScrollBar(scrollBar);
treeView->setHorizontalScrollBar(scrollBar);

// 设置滚动策略
treeView->setVerticalScrollBarPolicy(
    Qt::ScrollBarAsNeeded
);

4. 展开控制

cpp
// 展开全部
treeView->expandAll();

// 收起全部
treeView->collapseAll();

// 展开指定项
treeView->expand(index);

// 收起指定项
treeView->collapse(index);

注意事项

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

最佳实践

  1. 合理设置大小
  2. 控制数据量
  3. 优化渲染
  4. 注意性能
  5. 统一交互
  6. 保持一致
  7. 动画流畅
  8. 响应式布局

相关组件

  • QTreeView: 基类
  • ElaScrollBar: 滚动条组件
  • QProxyStyle: 样式系统
  • QHeaderView: 表头组件