我的应用程序可以启动QMainWindow
的多个实例,我希望每个实例都具有相同的菜单。如果没有实例初始化,但应用程序仍在运行(可能在Mac OS X上),我仍然希望显示相同的菜单,但禁用了一些项目。
我该怎么做呢?它会工作子类QMenu
或QMenuBar
,把子类变成一个单例,并传递给每个QMainWindow
?
QMenu
遵循Qt的所有权概念,每个菜单或操作只能由一个父级拥有。有一些方法可以克服这一点,但这并不是正确的做法。在这种情况下,子类不能改变太多,尤其是所有权模型。
我建议你创建一个菜单工厂,为每个窗口创建单独的菜单和操作(没有窗口的情况下一个),并将每个操作连接到相应的插槽(在窗口类中或在一些全局类中)。