Как избежать двусмысленности Qt (особенно, когда ярлыки имеют разные контексты)? - PullRequest
3 голосов
/ 02 апреля 2011

У меня есть приложение, в котором есть комбинация клавиш Ctrl + S для действия «Сохранить» в меню «Файл». Это действие имеет контекст быстрого доступа по умолчанию Qt :: WindowShortcut.

В этом приложении есть окно закрепления с действием, которое также использует сочетание клавиш Ctrl + S. Этот ярлык имеет контекст Qt :: WidgetShortcut.

Ярлык окна работает нормально. (Это выполняется, если нажаты Ctrl + S, когда фокус находится где-либо, кроме окна стыковки, о котором я говорил.)

Ярлык виджета на самом деле не работает. То есть, если действие окна отключено, то виджет один работает, так как нет никакой двусмысленности. Но если оба действия включены, и фокус находится на окне закрепления, то Ctrl + S ничего не делает.

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

1 Ответ

1 голос
/ 06 марта 2013

У меня была похожая ситуация, когда два виджета имели одинаковые ярлыки (для двух разных действий), но вызывался только один.Единственным способом, которым я смог это исправить, было: 1. удалить ярлыки из действий в двух виджетах 2. создать другое действие с ярлыком в родительском окне 3. вызвать соответствующий обработчик виджета из обработчика окна.

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