QMenu 多级菜单 获取当前选项
时间: 2024-09-06 08:06:47 浏览: 64
Qt多级菜单
在使用C++的Qt框架中,`QMenu` 是一个用于创建菜单栏的类。如果你想要创建一个多级菜单(即菜单中的菜单,也就是子菜单),你可以使用 `QMenu` 的 `addMenu()` 方法来添加子菜单。为了获取当前选中的菜单项,你可以通过连接 `triggered` 信号到一个槽函数,在槽函数中使用 `QAction` 的 `text()` 方法获取选中项的文本。
以下是一个创建多级菜单并获取当前选项的简单示例代码:
```cpp
#include <QApplication>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建主窗口
QMainWindow mainWindow;
// 创建主菜单
QMenuBar *menuBar = mainWindow.menuBar();
// 添加一个一级菜单(主菜单)
QMenu *fileMenu = menuBar->addMenu(tr("&File"));
// 添加一个二级菜单(子菜单)
QMenu *openRecentMenu = fileMenu->addMenu(tr("Open &Recent"));
// 创建一些动作(菜单项)
QAction *openAction = fileMenu->addAction(tr("Open"));
QAction *saveAction = fileMenu->addAction(tr("Save"));
QAction *exitAction = fileMenu->addAction(tr("Exit"));
// 创建一些子菜单项
QAction *recent1Action = openRecentMenu->addAction(tr("File 1"));
QAction *recent2Action = openRecentMenu->addAction(tr("File 2"));
// 连接信号和槽,以获取当前选中的菜单项
QObject::connect(openRecentMenu, &QMenu::triggered, [](QAction *action) {
qDebug() << "Current option:" << action->text();
});
// 显示主窗口
mainWindow.show();
return app.exec();
}
```
在这个示例中,我们创建了一个主菜单 `File` 和一个子菜单 `Open Recent`。我们添加了一些菜单项,例如 `Open`、`Save` 和 `Exit`,以及子菜单项 `File 1` 和 `File 2`。通过连接 `triggered` 信号到一个 lambda 函数,当在子菜单 `Open Recent` 中选中一个菜单项时,控制台会输出当前选中的菜单项的文本。
阅读全文