QMenu多级菜单

菜单也是交互设计中比较重要的一项内容

Posted by 雯饰太一 on May 28, 2023

QMenu多级菜单

要在 QMenu 中设置二级菜单,可以使用 QMenuaddMenu 函数创建一个子菜单,并将其添加到主菜单中。以下是一个示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <QApplication>
#include <QMenu>
#include <QMenuBar>
#include <QAction>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建主窗口和菜单栏
    QMainWindow mainWindow;
    QMenuBar menuBar(&mainWindow);
    mainWindow.setMenuBar(&menuBar);

    // 创建主菜单
    QMenu mainMenu("主菜单");

    // 创建一级菜单项
    QAction action1("菜单项1");
    QAction action2("菜单项2");
    QAction action3("菜单项3");

    // 创建二级菜单
    QMenu subMenu("二级菜单");

    // 创建二级菜单项
    QAction subAction1("二级菜单项1");
    QAction subAction2("二级菜单项2");

    // 将二级菜单项添加到二级菜单中
    subMenu.addAction(&subAction1);
    subMenu.addAction(&subAction2);

    // 将二级菜单添加为一级菜单项的子菜单
    action1.setMenu(&subMenu);

    // 将一级菜单项添加到主菜单中
    mainMenu.addAction(&action1);
    mainMenu.addAction(&action2);
    mainMenu.addAction(&action3);

    // 将主菜单添加到菜单栏中
    menuBar.addMenu(&mainMenu);

    mainWindow.show();

    return app.exec();
}

在上述示例中,创建了一个主窗口和菜单栏。然后建了一个主菜单,并创建了一级菜单项 action1action2action3。接下来,我们创建了一个二级菜单 subMenu,并在其中添加了二级菜单项 subAction1subAction2。最后,我们将二级菜单 subMenu 设置为一级菜单项 action1 的子菜单,并将一级菜单项添加到主菜单中。

运行示例代码后,您将看到一个带有主菜单和二级菜单的窗口。当单击主菜单中的一级菜单项 菜单项1 时,将显示二级菜单,并可以选择二级菜单项。

直接使用lambda表达式形式创建action

1
2
3
4
menu.addAction(QStringLiteral("测试菜单"), this, [=]()
	{
		//直接写具体的操作				
	});