你如何访问给定 QMenuBar 的菜单?

How do you access the menus given a QMenuBar?

在 Qt 中如何恢复给定填充的菜单 QMenuBar

它们似乎不是菜单栏的 children。例如,在以下内容之后(菜单创建功能成功并执行您期望的操作)

menuBar()->addMenu(create_file_menu(this));
menuBar()->addMenu(create_view_menu(this));
auto children = menuBar()->children();
auto first_child = children[0];

children 的大小为 1,而 child、first_child 是 object 类型的 QMenuBarExtension。我期待得到两个 children,第一个是文件菜单。

如果重要的话,我正在使用 Qt6。

QMenu 通过 QWidget::addAction(menu->menuAction()) 内部添加到 QMenuBar(参见 。 从 QWidget 中,您可以通过 QWidget::actions() - 方法检索添加的 QAction,其中 returns 是关联 QAction 的列表。在您的具体示例中,menuBar()->actions() 应该为您的菜单检索至少两个操作。

但是,似乎无法从 QMenu::menuAction() - 创建的 QAction 返回到关联菜单。因此,您可能需要自己存储一个指向您创建的 QMenu 对象的指针。