Skip to content

ElaTableView 组件文档 ​

概述 ​

ElaTableView 是一个现代化的表格视图组件,继承自 QTableView。它提供了自定义样式、行悬浮、主题适配等特性。

特性 ​

  • 自定义样式
  • 行悬浮效果
  • 主题适配
  • 隔行变色
  • 选中特效
  • 滚动优化
  • 表头自定义
  • 性能优化

属性 ​

基础属性 ​

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

信号 ​

cpp
// 视图显示
Q_SIGNAL void tableViewShow();

// 视图隐藏
Q_SIGNAL void tableViewHide();

样式系统 ​

表格样式 ​

cpp
void drawControl(CE_ItemViewItem) {
    // 背景绘制
    if (state & State_Selected) {
        painter.setBrush(selectedColor);
    } else if (state & State_MouseOver) {
        painter.setBrush(hoverColor);
    }
    
    // 图标绘制
    if (!icon.isNull()) {
        icon.paint(painter, iconRect);
    }
    
    // 文本绘制
    painter.setPen(textColor);
    painter.drawText(textRect, text);
    
    // 选中特效
    if (state & State_Selected) {
        painter.setBrush(primaryColor);
        painter.drawRoundedRect(
            indicator, radius, radius
        );
    }
}

表头样式 ​

cpp
void drawControl(CE_HeaderSection) {
    // 背景绘制
    painter.setBrush(headerColor);
    painter.drawRect(rect);
    
    // 悬浮效果
    if (state & State_MouseOver) {
        painter.setBrush(hoverColor);
    }
    
    // 按下效果
    if (state & State_Sunken) {
        painter.setBrush(pressColor);
    }
}

使用示例 ​

基础用法 ​

1. 创建表格 ​

cpp
// 创建表格
ElaTableView* tableView = 
    new ElaTableView(this);

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

// 设置选择模式
tableView->setSelectionBehavior(
    QAbstractItemView::SelectRows
);

2. 表头设置 ​

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

// 隐藏垂直表头
tableView->verticalHeader()
    ->setHidden(true);

// 设置列宽模式
tableView->horizontalHeader()
    ->setSectionResizeMode(
        QHeaderView::Interactive
    );

3. 外观设置 ​

cpp
// 设置隔行变色
tableView->setAlternatingRowColors(true);

// 设置图标大小
tableView->setIconSize(QSize(38, 38));

// 设置最小尺寸
tableView->horizontalHeader()
    ->setMinimumSectionSize(60);
tableView->verticalHeader()
    ->setMinimumSectionSize(46);

4. 列宽设置 ​

cpp
// 显示时设置列宽
connect(tableView, 
    &ElaTableView::tableViewShow,
    this, [=]() {
    tableView->setColumnWidth(0, 60);
    tableView->setColumnWidth(1, 205);
    tableView->setColumnWidth(2, 170);
    tableView->setColumnWidth(3, 150);
    tableView->setColumnWidth(4, 60);
});

注意事项 ​

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

最佳实践 ​

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

相关组件 ​

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