你如何访问给定 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 对象的指针。
在 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::actions()
- 方法检索添加的 QAction,其中 returns 是关联 QAction 的列表。在您的具体示例中,menuBar()->actions()
应该为您的菜单检索至少两个操作。
但是,似乎无法从 QMenu::menuAction()
- 创建的 QAction 返回到关联菜单。因此,您可能需要自己存储一个指向您创建的 QMenu 对象的指针。