在 Qt 中,您可以很方便地在菜单中添加子菜单。以下是一个示例,演示如何在某个菜单项中添加子菜单。
示例代码
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QMessageBox>
class MainWindow : public QMainWindow {
public:
MainWindow() {
// 创建菜单栏
QMenuBar *menuBar = this->menuBar();
// 创建“文件”菜单
QMenu *fileMenu = menuBar->addMenu("文件");
// 添加基本操作
QAction *newAction = fileMenu->addAction("新建");
QAction *openAction = fileMenu->addAction("打开");
// 创建“导入”子菜单并添加到“文件”菜单中
QMenu *importSubmenu = new QMenu("导入", this);
QAction *importCsvAction = importSubmenu->addAction("导入CSV");
QAction *importJsonAction = importSubmenu->addAction("导入JSON");
// 将子菜单添加到"文件"菜单
fileMenu->addMenu(importSubmenu);
// 连接信号和槽以响应动作点击
connect(newAction, &QAction::triggered, this, []() {
QMessageBox::information(nullptr, "信息", "新建文件被选择!");
});
connect(openAction, &QAction::triggered, this, []() {
QMessageBox::information(nullptr, "信息", "打开文件被选择!");
});
connect(importCsvAction, &QAction::triggered, this, []() {
QMessageBox::information(nullptr, "信息", "导入CSV被选择!");
});
connect(importJsonAction, &QAction::triggered, this, []() {
QMessageBox::information(nullptr, "信息", "导入JSON被选择!");
});
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow window;
window.resize(400, 300);
window.setWindowTitle("带有子菜单的示例");
window.show();
return app.exec();
}
代码说明
- 创建主窗口: 使用
QMainWindow
创建一个主窗口。 - 创建菜单栏: 使用
this->menuBar()
获取窗口的菜单栏。 - 创建顶级菜单:
- 创建一个名为
"文件"
的顶级菜单,并使用addMenu()
方法将其添加到菜单栏。
- 创建一个名为
- 添加基本操作:
- 使用
addAction()
向"文件"
菜单中添加"新建"
和"打开"
操作。
- 使用
- 创建并添加子菜单:
- 创建一个新的
QMenu
实例作为子菜,命名为"导入"
。 - 在这个子菜中使用
addAction()
添加两个选项:"导入CSV"
和"导入JSON"
。 - 使用
fileMenu->addMenu(importSubmenu)
将这个子菜添加到"文件"
菜单中。
- 创建一个新的
- 连接信号与槽:
- 为每个操作连接信号,以便用户点击时能够触发相应的消息框。
运行此代码后,您将看到一个包含“文件”主菜和包含“导入”子菜的应用程序。点击“导入”将显示该子菜及其选项。
内容由零声教学AI助手提供,问题来源于学员提问