Skip to content

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
);

注意事项 ​

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

最佳实践 ​

  1. 合理设置大小
  2. 控制菜单项数量
  3. 优化动画效果
  4. 注意性能影响
  5. 统一交互方式
  6. 保持样式一致
  7. 动画流畅性
  8. 响应式布局

相关组件 ​

  • QToolButton: 基类
  • ElaMenu: 菜单组件
  • ElaIcon: 图标系统
  • QProxyStyle: 样式系统