QAction
QAction
是一个独立于具体界面元素的抽象动作表示。它封装了一个用户界面动作(比如点击命令),通常与一个菜单项、工具栏按钮或快捷键相关联。QAction
视为一个可执行的命令,它可以被触发,比如用户点击了菜单项或按钮。QAction
可以被添加到菜单、工具栏或者绑定到快捷键。它包含了动作的文本、图标、快捷键等信息,并发出信号(如 triggered
),以便在动作被激活时执行相关的逻辑。QMenu
QMenu
是一个代表应用程序菜单中的单个菜单的对象。它可以包含多个 QAction
对象,以及子菜单(也是 QMenu
对象)。QMenu
对象都可以包含多个动作(QAction
对象)和/或更多子菜单,它负责管理这些选项的显示和用户与之交互的逻辑。QMenuBar
QMenuBar
是代表窗口顶部菜单栏的对象。它可以包含多个 QMenu
对象。QMenuBar
通常位于窗口的顶部,作为主要的命令和功能入口点。QMenuBar
可以容纳多个 QMenu
对象,每个 QMenu
对应于菜单栏中的一个菜单。它管理这些菜单的布局和显示。协同工作
这三个类通常一起使用来构建用户界面:
QAction
代表一个具体的动作或命令。QMenu
用于组织多个 QAction
,形成一个下拉菜单。QMenuBar
则在窗口顶部展示多个 QMenu
,形成完整的菜单栏。addAction
addAction
用于 QMenu
和 QToolBar
类中,用来添加动作(QAction
对象)到一个菜单或工具栏中。
addMenu
addMenu
用于 QMenuBar
和 QMenu
类中,用来添加一个菜单或子菜单。
#include "MenuWidget.h"
#include<qmenu.h>
MenuWidget::MenuWidget(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//插入菜单栏
QMenuBar* m = new QMenuBar(this);
m->resize(width(), m->height());
//一级菜单
QMenu* m1 = m->addMenu(QStringLiteral("菜单1"));
//二级菜单
QAction* a1 = m1->addAction(QStringLiteral("二级菜单1.1"));
QAction* a2 = m1->addAction(QStringLiteral("二级菜单1.2"));
QAction* a3 = m1->addAction(QStringLiteral("二级菜单1.3"));
QMenu *m14= m1->addMenu(QStringLiteral("二级菜单1.3"));
//三级菜单
m14->addAction(QStringLiteral("三级菜单1.4.1"));
QMenu* m2 = m->addMenu(QStringLiteral("菜单2"));
QMenu* m3 = m->addMenu(QStringLiteral("菜单3"));
}
MenuWidget::~MenuWidget()
{}
triggered(): 这是最常用的信号,当动作被触发时发出,无论是通过用户交互(如点击菜单项或工具栏按钮)还是程序调用
hovered(): 当用户将鼠标悬停在与动作相关联的界面元素上时,发出这个信号
快捷键设置