Как мне создать одно меню для всего приложения Qt?
Мое приложение может запускать несколько экземпляров QMainWindow
и я бы хотел, чтобы у каждого экземпляра было одно и то же меню. Если инициализированные экземпляры отсутствуют, но приложение все еще работает (возможно, в Mac OS X), я бы хотел, чтобы отображалось то же меню, но с несколькими отключенными пунктами.
Как бы я поступил так? Будет ли это работать на подкласс QMenu
или же QMenuBar
, превратить подкласс в синглтон и передать его каждому QMainWindow
?
1 ответ
QMenu
следует концепции владения Qt, и каждое меню или действие может принадлежать только одному из родителей. Есть способы преодолеть это, но это было бы неправильно. И подклассы не могут сильно измениться в этом случае, особенно в модели собственной работы.
Я советую вам создать фабрику меню, которая создает отдельное меню и действия для каждого окна (и одно для случая без окон) и соединяет каждое действие с соответствующим слотом (либо в классе окна, либо в некотором глобальном классе для глобальных действий).