Мне нужно разрешить пользователям изменять сочетания клавиш для некоторых действий в моем приложении в диалоге настроек моего приложения. Я создал подкласс QLineEdit, чтобы создать элемент управления, который принимает комбинации клавиш и отображает комбинацию (например: если пользователь нажимает Ctrl и I, будет отображаться редактирование линии Ctrl + я).
Если я введу ярлык уже существующего действия на уровне приложения в редактировании строки, нажатие этой клавиши не будет получено редактированием строки, и вместо этого будет запущено соответствующее действие. Это поведение приемлемо для меня, но проблема в том, что поведение не согласуется с некоторыми специальными ярлыками, такими как Ctrl + С, Ctrl + , и т. д. Если я уже назначил такой специальный ярлык какому-либо действию и попытался установить тот же самый ярлык для какого-либо другого действия, редактирование строки получает событие (в отличие от других ярлыков), и ранее назначенное действие не запускается.
Кто-нибудь знает способ отключения ярлыков на уровне приложения, чтобы я мог получать события в строке редактирования и сам проверять наличие дубликатов ярлыков? Или кто-нибудь может предложить способ последовательной обработки сценария, когда пользователь вводит уже существующий ярлык в другой ярлык?
Вы не должны использовать QLineEdit
для этого вообще. Qt
имеет специальный виджет для этого. это QKeySequenceEdit
, Попробуйте этот виджет.