1

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

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

4

1 回答 1

2

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

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

于 2015-06-08T17:12:06.463 回答