Проверка QToolButton с меню, если проверяется какой-либо из проверяемых QActions в этом меню

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

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

1 ответ

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

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

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

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