ElaMenuBar 组件文档
概述
ElaMenuBar 是一个现代化的菜单栏组件,继承自 QMenuBar。它提供了图标支持、主题适配、样式美化等增强特性。
特性
- 图标支持
- 主题适配
- 悬停效果
- 圆角边框
- 快捷键支持
- 子菜单
- 分隔符
- 自定义高度
方法
添加菜单
cpp
// 添加菜单
ElaMenu* addMenu(const QString& title);
ElaMenu* addMenu(const QIcon& icon,
const QString& title);
ElaMenu* addMenu(ElaIconType::IconName icon,
const QString& title);
// 添加图标动作
QAction* addElaIconAction(
ElaIconType::IconName icon,
const QString& text);
QAction* addElaIconAction(
ElaIconType::IconName icon,
const QString& text,
const QKeySequence& shortcut);使用示例
基础用法
1. 创建菜单栏
cpp
// 创建菜单栏
ElaMenuBar* menuBar = new ElaMenuBar(this);
menuBar->setFixedHeight(30);
// 添加到窗口
setMenuBar(menuBar);
// 添加菜单项
menuBar->addElaIconAction(
ElaIconType::Home,
"主页"
);2. 添加子菜单
cpp
// 添加带图标的子菜单
ElaMenu* fileMenu = menuBar->addMenu(
ElaIconType::File,
"文件(&F)"
);
// 添加菜单项
fileMenu->addElaIconAction(
ElaIconType::Save,
"保存",
QKeySequence::Save
);
fileMenu->addElaIconAction(
ElaIconType::Open,
"打开",
QKeySequence::Open
);高级用法
1. 多级菜单
cpp
// 创建一级菜单
ElaMenu* viewMenu = menuBar->addMenu(
ElaIconType::View,
"视图(&V)"
);
// 创建二级菜单
ElaMenu* themeMenu = viewMenu->addMenu(
ElaIconType::Theme,
"主题"
);
// 添加菜单项
themeMenu->addElaIconAction(
ElaIconType::Sun,
"浅色"
);
themeMenu->addElaIconAction(
ElaIconType::Moon,
"深色"
);2. 分组菜单
cpp
// 添加分隔符
menuBar->addSeparator();
// 添加编辑菜单组
ElaMenu* editMenu = menuBar->addMenu(
"编辑(&E)"
);
editMenu->addElaIconAction(
ElaIconType::Cut,
"剪切",
QKeySequence::Cut
);
editMenu->addElaIconAction(
ElaIconType::Copy,
"复制",
QKeySequence::Copy
);样式系统
菜单项样式
cpp
void drawControl(CE_MenuBarItem) {
// 绘制背景
if (selected || pressed) {
painter->setBrush(hoverColor);
painter->drawRoundedRect(rect, 3, 3);
}
// 绘制图标
if (!icon.isNull()) {
icon.paint(painter, iconRect,
alignment, mode);
}
// 绘制文本
painter->setPen(textColor);
painter->drawText(textRect,
alignment, text);
}布局算法
cpp
QSize sizeFromContents(CT_MenuBarItem) {
QSize size = baseSize;
// 设置固定高度
size.setHeight(menuBarHeight);
// 添加图标空间
if (!icon.isNull()) {
size.setWidth(
size.width() + iconWidth + margin);
}
return size;
}注意事项
- 继承自 QMenuBar
- 自动处理主题切换
- 支持快捷键
- 智能布局
- 样式继承
- 注意内存管理
- 性能优化
- 主题适配
最佳实践
- 合理使用图标
- 添加快捷键
- 控制菜单层级
- 分组管理
- 注意命名规范
- 合理使用分隔符
- 保持样式一致
- 优化用户体验
相关组件
- QMenuBar: 基类
- ElaMenu: 菜单组件
- ElaIcon: 图标系统
- ElaTheme: 主题管理