ElaToolButton 组件文档
概述
ElaToolButton 是一个现代化的工具按钮组件,继承自 QToolButton。它提供了自定义样式、动画效果、主题适配等特性。
特性
- 自定义样式
- 动画效果
- 主题适配
- 圆角边框
- 透明背景
- 菜单支持
- 图标支持
- 文本支持
属性
基础属性
cpp
// 边框圆角
Q_PROPERTY(int borderRadius
READ getBorderRadius
WRITE setBorderRadius)
// 选中状态
Q_PROPERTY(bool isSelected
READ getIsSelected
WRITE setIsSelected)公共方法
样式设置
cpp
// 设置透明背景
void setIsTransparent(bool isTransparent);
// 设置菜单
void setMenu(ElaMenu* menu);
// 设置图标
void setElaIcon(ElaIconType::IconName icon);样式系统
按钮样式
cpp
void drawComplexControl(CC_ToolButton) {
// 背景绘制
if (state & State_Enabled) {
if (state & State_Sunken) {
painter.setBrush(pressColor);
} else if (isSelected) {
painter.setBrush(selectedColor);
} else if (state & State_MouseOver) {
painter.setBrush(hoverColor);
}
painter.drawRoundedRect(
rect, radius, radius
);
}
}菜单指示器
cpp
void drawIndicator() {
// 设置字体
painter.setFont("ElaAwesome");
// 绘制展开图标
painter.drawText(
rect,
Qt::AlignCenter,
AngleDown
);
// 旋转动画
painter.rotate(expandIconRotate);
}使用示例
基础用法
1. 创建按钮
cpp
// 创建按钮
ElaToolButton* button =
new ElaToolButton(this);
// 设置图标
button->setElaIcon(
ElaIconType::Broom
);
// 设置文本
button->setText("清理");2. 样式设置
cpp
// 设置圆角
button->setBorderRadius(4);
// 设置透明背景
button->setIsTransparent(true);
// 设置图标大小
button->setIconSize(QSize(22, 22));
// 设置弹出模式
button->setPopupMode(
QToolButton::InstantPopup
);3. 菜单设置
cpp
// 创建菜单
ElaMenu* menu = new ElaMenu(this);
menu->addAction("选项1");
menu->addAction("选项2");
// 设置菜单
button->setMenu(menu);
// 设置菜单项高度
menu->setMenuItemHeight(27);4. 状态设置
cpp
// 设置选中状态
button->setIsSelected(true);
// 设置禁用状态
button->setEnabled(false);
// 设置按钮样式
button->setToolButtonStyle(
Qt::ToolButtonTextBesideIcon
);注意事项
- 继承自 QToolButton
- 自动处理主题切换
- 智能内存管理
- 事件处理
- 性能优化
- 主题适配
- 样式继承
- 动画流畅
最佳实践
- 合理设置大小
- 控制菜单项数量
- 优化动画效果
- 注意性能影响
- 统一交互方式
- 保持样式一致
- 动画流畅性
- 响应式布局
相关组件
- QToolButton: 基类
- ElaMenu: 菜单组件
- ElaIcon: 图标系统
- QProxyStyle: 样式系统