В диалоговых окнах GUI большинство приложений обеспечивают управление с клавиатуры следующим образом:
- Клавиша ввода - нажимает кнопку по умолчанию.(Значение по умолчанию обычно обозначается полужирной рамкой кнопки.)
- Клавиша Esc - нажимает кнопку отмены или закрытия.
- Клавиша пробела - нажимает виджет, который в настоящее время имеет фокус клавиатуры.
- Клавиша табуляции - перемещает фокус к следующему виджету.
Вопрос в том, когда фокус клавиатуры находится на виджете, который является кнопкой, должна ли кнопка по умолчанию быть заменена на кнопку с фокусом?
Я вижу некоторые проблемы с этим поведением:
- Шум отображения перерисовывающих кнопок, чтобы отменить выделение оригинальной кнопки по умолчанию и перебросить кнопку под фокусом как новое значение по умолчанию.
- Клавиша пробела теперь несколько избыточна с клавишей Enter.
- Нет ускорителя клавиатуры, чтобы получить обычную кнопку по умолчанию (обычно кнопка ОК).
Однако, похоже,тенденция была в этом направлении, чтобы изменить кнопку по умолчанию с изменением фокуса на другую кнопку.Чем обоснован этот отход от ранних графических интерфейсов?Казалось бы, он обеспечивает меньшую функциональность, поскольку нет способа нажать кнопку по умолчанию.Люди находили, что оригинальная модель была слишком сложной для пользователей, чтобы понять?Я бы подумал, что управление диалогами с помощью клавиатуры будет задачей для опытных пользователей, которые не будут иметь проблем с пониманием модели и предпочитают иметь ускоритель для текущей кнопки (пробел) и исходную кнопку по умолчанию (ввод) всегда.
Обратите внимание, что Qt for one поддерживает изменение: свойство autoDefault QPushButton отвечает за поведение изменения кнопки по умолчанию.По умолчанию его значение равно true.Поэтому вы должны предпринять дополнительные действия, чтобы установить значение false для всех кнопок, чтобы они не становились кнопками по умолчанию при фокусировке.