ElaToolBar 组件文档
概述
ElaToolBar 是一个现代化的工具栏组件,继承自 QToolBar。它提供了自定义样式、浮动支持、主题适配等特性。
特性
- 自定义样式
- 浮动支持
- 主题适配
- 阴影效果
- 分隔符
- 拖动句柄
- 图标支持
- 透明背景
属性
基础属性
cpp
// 工具栏间距
void setToolBarSpacing(int spacing);
int getToolBarSpacing() const;公共方法
操作方法
cpp
// 添加图标动作
QAction* addElaIconAction(
ElaIconType::IconName icon,
const QString& text
);
// 添加带快捷键的图标动作
QAction* addElaIconAction(
ElaIconType::IconName icon,
const QString& text,
const QKeySequence& shortcut
);样式系统
工具栏样式
cpp
void paintEvent() {
if (isFloating()) {
// 绘制阴影
eTheme->drawEffectShadow(
&painter, rect(),
shadowWidth, radius
);
// 绘制背景
painter.setPen(borderColor);
painter.setBrush(backgroundColor);
painter.drawRoundedRect(
foregroundRect, radius, radius
);
// 绘制拖动句柄
if (handleRect.isValid()) {
style->drawPrimitive(
PE_IndicatorToolBarHandle
);
}
}
}分隔符样式
cpp
void drawPrimitive(PE_IndicatorToolBarSeparator) {
// 垂直分隔符
if (orientation == Qt::Vertical) {
painter.drawRect(
x + width * 0.1,
center.y() - 0.9,
width * 0.8,
1.8
);
}
// 水平分隔符
else {
painter.drawRect(
center.x() - 0.9,
y + height * 0.1,
1.8,
height * 0.8
);
}
}使用示例
基础用法
1. 创建工具栏
cpp
// 创建工具栏
ElaToolBar* toolBar =
new ElaToolBar("工具栏", this);
// 设置间距
toolBar->setToolBarSpacing(10);
// 设置边距
toolBar->layout()->setContentsMargins(
3, 3, 3, 3
);2. 添加动作
cpp
// 添加图标动作
QAction* action = toolBar->addElaIconAction(
ElaIconType::Save,
"保存"
);
// 添加带快捷键的动作
QAction* action = toolBar->addElaIconAction(
ElaIconType::Open,
"打开",
QKeySequence::Open
);3. 浮动设置
cpp
// 允许浮动
toolBar->setFloatable(true);
// 浮动状态改变
connect(toolBar,
&ElaToolBar::topLevelChanged,
this, [=](bool floating) {
if (floating) {
// 设置浮动时的边距
toolBar->layout()
->setContentsMargins(9, 9, 9, 9);
} else {
// 设置停靠时的边距
toolBar->layout()
->setContentsMargins(3, 3, 3, 3);
}
});注意事项
- 继承自 QToolBar
- 自动处理主题切换
- 智能内存管理
- 事件处理
- 性能优化
- 主题适配
- 样式继承
- 浮动支持
最佳实践
- 合理设置大小
- 控制动作数量
- 优化布局
- 注意性能
- 统一交互
- 保持一致
- 动画流畅
- 响应式布局
相关组件
- QToolBar: 基类
- ElaToolButton: 工具按钮
- ElaIcon: 图标系统
- QProxyStyle: 样式系统