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);注意事项
- 继承自 QPushButton
- 自动处理主题切换
- 智能内存管理
- 事件处理
- 性能优化
- 主题适配
- 样式继承
- 布局优化
最佳实践
- 合理设置大小
- 控制文本长度
- 优化图片大小
- 注意性能
- 统一交互
- 保持一致
- 动画流畅
- 响应式布局
相关组件
- QPushButton: 基类
- ElaTheme: 主题系统
- QProxyStyle: 样式系统
- QPainter: 绘制系统