2015-03-09 6 views
0

Скажем, у меня есть QToolButton с отложенным действием, отображающим меню. Указанное меню содержит несколько проверяемых действий. В этом конкретном случае это кнопка, активирующая инструмент масштабирования, и доступны 3 масштабирования доступных параметров QActions, организованных в QActionGroup.Наличие QToolButton с меню, если проверено, проверено ли какое-либо проверяемое QActions в этом меню.

Я хочу, чтобы эта кнопка инструмента была проверена, если проверяется любой из проверяемых действий в меню. Как я могу сделать это кратким и Qt-идиоматическим способом?

ответ

1

Я не использую QToolButton, но я делаю какое-то состояние вуду w/QAction, меняя его из разных мест. Каждый раз, когда вызывается QAction :: toggled(), подключенный слот должен выполнить проверку. Я вижу два способа сделать это.

1: Более легкий способ состоит в том, чтобы просто увеличить число членов, отслеживая количество QActions под этим QToolButton. Приращение при проверке QAction. Уменьшите его, когда они не установлены. Если этот счетчик равен> 0, проверьте свой QToolButton. Если это 0, снимите флажок. Это означает, что ваш слот должен знать состояние, которое вы можете сделать, отправив отправителя() в QAction * в слот.

2: Если у вас есть некоторый тип отображения QAction на QToolButton, вы можете перебирать их каждый раз, когда вызывается слот. Это, по-видимому, наивный подход ко мне, и больше хлопот, чтобы не отставать от этого сценария. Иногда мне приходится добавлять QAction в QMenu, основанный на запуске другого QAction, поэтому у меня уже есть аналогичное место для сопоставления.

 Смежные вопросы

  • Нет связанных вопросов^_^