如何为整个 Qt 应用程序创建一个菜单?
How do I create one menu for an entire Qt application?
我的应用程序可以启动 QMainWindow
的多个实例,我希望每个实例都有相同的菜单。如果没有初始化的实例,但应用程序仍然是 运行(可能在 Mac OS X 上),我仍然希望显示相同的菜单,但有几个项目被禁用。
我该怎么做?将 QMenu
或 QMenuBar
子类化,将子类变成单例,然后将其传递给每个 QMainWindow
是否可行?
QMenu
遵循 Qt 的所有权概念,每个菜单或操作只能由一个父级拥有。有办法克服它,但这不是正确的做法。在这种情况下,subclassing 不会有太大变化,尤其是所有权模型。
我建议您创建一个菜单工厂,为每个 window(以及没有 windows 的情况创建单独的菜单和操作)并将每个操作连接到相应的插槽(在window class 或在某些全局 class 中用于全局操作)。
我的应用程序可以启动 QMainWindow
的多个实例,我希望每个实例都有相同的菜单。如果没有初始化的实例,但应用程序仍然是 运行(可能在 Mac OS X 上),我仍然希望显示相同的菜单,但有几个项目被禁用。
我该怎么做?将 QMenu
或 QMenuBar
子类化,将子类变成单例,然后将其传递给每个 QMainWindow
是否可行?
QMenu
遵循 Qt 的所有权概念,每个菜单或操作只能由一个父级拥有。有办法克服它,但这不是正确的做法。在这种情况下,subclassing 不会有太大变化,尤其是所有权模型。
我建议您创建一个菜单工厂,为每个 window(以及没有 windows 的情况创建单独的菜单和操作)并将每个操作连接到相应的插槽(在window class 或在某些全局 class 中用于全局操作)。