У меня есть приложение, в котором есть комбинация клавиш Ctrl + S для действия «Сохранить» в меню «Файл». Это действие имеет контекст быстрого доступа по умолчанию Qt :: WindowShortcut.
В этом приложении есть окно закрепления с действием, которое также использует сочетание клавиш Ctrl + S. Этот ярлык имеет контекст Qt :: WidgetShortcut.
Ярлык окна работает нормально. (Это выполняется, если нажаты Ctrl + S, когда фокус находится где-либо, кроме окна стыковки, о котором я говорил.)
Ярлык виджета на самом деле не работает. То есть, если действие окна отключено, то виджет один работает, так как нет никакой двусмысленности. Но если оба действия включены, и фокус находится на окне закрепления, то Ctrl + S ничего не делает.
Мне кажется, что было бы неразумно ожидать, что в случае идентичных активных ярлыков, если один из них имеет более "локальный" контекст, чем другой, то он будет выполняться. Я не думаю, что есть какой-то способ сказать фреймворку Qt, что я хочу, чтобы это произошло? Или общий способ обойти это? Я мог бы просто изменить один из ярлыков, чтобы они не были неоднозначными, но они локализуемы и зависят от платформы, поэтому я не могу гарантировать, что не возникнет никакой другой подобной ситуации.