如何为整个 Qt 应用程序创建一个菜单?

How do I create one menu for an entire Qt application?

我的应用程序可以启动 QMainWindow 的多个实例,我希望每个实例都有相同的菜单。如果没有初始化的实例,但应用程序仍然是 运行(可能在 Mac OS X 上),我仍然希望显示相同的菜单,但有几个项目被禁用。

我该怎么做?将 QMenuQMenuBar 子类化,将子类变成单例,然后将其传递给每个 QMainWindow 是否可行?

QMenu 遵循 Qt 的所有权概念,每个菜单或操作只能由一个父级拥有。有办法克服它,但这不是正确的做法。在这种情况下,subclassing 不会有太大变化,尤其是所有权模型。

我建议您创建一个菜单工厂,为每个 window(以及没有 windows 的情况创建单独的菜单和操作)并将每个操作连接到相应的插槽(在window class 或在某些全局 class 中用于全局操作)。