【发布时间】:2015-06-08 13:37:55
【问题描述】:
我的应用程序可以启动多个QMainWindow 实例,并且我希望每个实例都有相同的菜单。如果没有初始化实例但应用程序仍在运行(可能在 Mac OS X 上),我仍然希望显示相同的菜单但禁用一些项目。
我该怎么做呢?将QMenu 或QMenuBar 子类化,将子类转换为单例,并将其传递给每个QMainWindow 是否可行?
【问题讨论】:
-
您不想要 MDI 应用程序吗?
-
是的,但我也希望能够在
QMainWindow之外使用我的QMainWindow菜单中的相同菜单项。例如,如果我有一个“新建...”菜单项,它在按下时会创建一个QMainWindow的新实例,我希望能够从QMainWindow菜单和全局 Mac OS X 中创建新实例QMainWindow尚未实例化但应用程序仍在运行时的菜单。 -
我认为这需要一个带有单例模式的
QMenu子类。我试图避免有两个单独的菜单(QMainWindow菜单和一个应用程序在没有活动QMainWindow时默认使用的菜单)。如果两个菜单中的项目具有完全相同的功能,则两个单独的菜单将需要有重复的代码。
标签: qt qt5 qmainwindow qmenu qmenubar