Skip to content

ElaReminderCard 组件文档

概述

ElaReminderCard 是一个现代化的提醒卡片组件,继承自 QPushButton。它提供了图片展示、标题副标题、主题适配等特性。

特性

  • 图片展示
  • 标题副标题
  • 主题适配
  • 阴影效果
  • 圆角边框
  • 悬浮效果
  • 焦点指示
  • 自适应布局

属性

基础属性

cpp
// 边框圆角
Q_PROPERTY(int borderRadius 
    READ getBorderRadius 
    WRITE setBorderRadius)

// 标题
Q_PROPERTY(QString title 
    READ getTitle 
    WRITE setTitle)

// 副标题
Q_PROPERTY(QString subTitle 
    READ getSubTitle 
    WRITE setSubTitle)

// 标题字号
Q_PROPERTY(int titlePixelSize 
    READ getTitlePixelSize 
    WRITE setTitlePixelSize)

// 副标题字号
Q_PROPERTY(int subTitlePixelSize 
    READ getSubTitlePixelSize 
    WRITE setSubTitlePixelSize)

// 标题间距
Q_PROPERTY(int titleSpacing 
    READ getTitleSpacing 
    WRITE setTitleSpacing)

// 卡片图片
Q_PROPERTY(QPixmap cardPixmap 
    READ getCardPixmap 
    WRITE setCardPixmap)

// 图片大小
Q_PROPERTY(QSize cardPixmapSize 
    READ getCardPixmapSize 
    WRITE setCardPixmapSize)

// 图片圆角
Q_PROPERTY(int cardPixmapBorderRadius 
    READ getCardPixmapBorderRadius 
    WRITE setCardPixmapBorderRadius)

// 图片模式
Q_PROPERTY(ElaCardPixType::PixMode cardPixMode 
    READ getCardPixMode 
    WRITE setCardPixMode)

样式系统

卡片样式

cpp
void paintEvent() {
    // 绘制阴影
    eTheme->drawEffectShadow(
        &painter, rect(), 
        shadowWidth, radius
    );
    
    // 绘制背景
    painter.setBrush(
        underMouse() ? hoverColor : baseColor
    );
    painter.drawRoundedRect(
        rect, radius, radius
    );
    
    // 绘制图片
    if (!pixmap.isNull()) {
        switch(pixMode) {
            case Ellipse:
                path.addEllipse(...);
                break;
            case RoundedRect:
                path.addRoundedRect(...);
                break;
            case Default:
                painter.drawPixmap(...);
                break;
        }
    }
    
    // 绘制焦点指示器
    painter.setBrush(primaryColor);
    painter.drawEllipse(
        point, radius, radius
    );
    
    // 绘制标题
    painter.setFont(titleFont);
    painter.drawText(
        rect, Qt::AlignLeft, title
    );
    
    // 绘制副标题
    painter.setFont(subTitleFont);
    painter.drawText(
        rect, Qt::AlignLeft, subTitle
    );
}

使用示例

基础用法

1. 创建卡片

cpp
// 创建卡片
ElaReminderCard* card = 
    new ElaReminderCard(this);

// 设置大小
card->setFixedSize(330, 105);

// 设置圆角
card->setBorderRadius(6);

2. 设置内容

cpp
// 设置标题
card->setTitle("重要提醒");

// 设置副标题
card->setSubTitle("这是一条重要提醒");

// 设置图片
card->setCardPixmap(pixmap);

// 设置图片大小
card->setCardPixmapSize(79, 79);

3. 样式设置

cpp
// 设置字号
card->setTitlePixelSize(15);
card->setSubTitlePixelSize(12);

// 设置间距
card->setTitleSpacing(3);

// 设置图片模式
card->setCardPixMode(
    ElaCardPixType::PixMode::RoundedRect
);

// 设置图片圆角
card->setCardPixmapBorderRadius(6);

注意事项

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

最佳实践

  1. 合理设置大小
  2. 控制文本长度
  3. 优化图片大小
  4. 注意性能
  5. 统一交互
  6. 保持一致
  7. 动画流畅
  8. 响应式布局

相关组件

  • QPushButton: 基类
  • ElaTheme: 主题系统
  • QProxyStyle: 样式系统
  • QPainter: 绘制系统