Как мне создать одно меню для всего приложения Qt?

Мое приложение может запускать несколько экземпляров QMainWindowи я бы хотел, чтобы у каждого экземпляра было одно и то же меню. Если инициализированные экземпляры отсутствуют, но приложение все еще работает (возможно, в Mac OS X), я бы хотел, чтобы отображалось то же меню, но с несколькими отключенными пунктами.

Как бы я поступил так? Будет ли это работать на подкласс QMenu или же QMenuBar, превратить подкласс в синглтон и передать его каждому QMainWindow?

1 ответ

Решение

QMenu следует концепции владения Qt, и каждое меню или действие может принадлежать только одному из родителей. Есть способы преодолеть это, но это было бы неправильно. И подклассы не могут сильно измениться в этом случае, особенно в модели собственной работы.

Я советую вам создать фабрику меню, которая создает отдельное меню и действия для каждого окна (и одно для случая без окон) и соединяет каждое действие с соответствующим слотом (либо в классе окна, либо в некотором глобальном классе для глобальных действий).

Другие вопросы по тегам