Как использовать один и тот же QAction в двух QMenus с разным текстом? - PullRequest
1 голос
/ 01 марта 2011

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

В MFC (от которого я имею удовольствие мигрировать в данный момент) это было легко, поскольку каждый пункт меню определялся отдельно и мог отображаться на один и тот же идентификатор, который был бы связан с обработчиком. В Qt, однако, QAction инкапсулирует поведение, а также текст / значок / и т.д. Так что я не думаю, что есть прямая поддержка для возврата другого текста в зависимости от того, где он используется.

Я думал о том, как это сделать, для каждого местоположения, чтобы создать «прокси» QAction, который имеет текст, специфичный для этого контекста, и просто имеет сигнал triggered(), связанный с исходным QAction ' с одним. Но я подумал, что должен сначала проверить, есть ли более простой способ приблизиться к этому.

Ответы [ 2 ]

4 голосов
/ 02 марта 2011

Я не знаю насчет MFC, но в Qt - QAction - это просто интерфейс. Один объект QAction может отображать только один текст. Но реальное действие, которое делает QAction, вы реализуете в том, что Qt называет SLOT. Тогда вы можете иметь столько интерфейсов (или объектов QActions), указывающих на один и тот же слот - просто подключите все объекты QAction, которые вы хотите сделать одинаково, к одному и тому же слоту.

Надеюсь, это поможет.

1 голос
/ 02 марта 2011

Предлагаемое вами решение самое простое, я думаю.Вы можете изменить текст действия динамически, когда меню активировано, но мне это кажется более сложным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...