В приложении Qt под Windows по умолчанию выбрана неправильная кнопка - PullRequest
0 голосов
/ 25 февраля 2012

Я разрабатывал настольное приложение с использованием Qt Creator под Linux (Kubuntu).В linux все хорошо, но в Windows в диалоговом окне по умолчанию выбирается неправильная кнопка.

Есть три кнопки: Edit, Continue и Stop.

Продолжить помечено как «AutoDefault» и «По умолчанию».

Стоп помечено как «AutoDefault», но не «По умолчанию».

Правка не помечена как «AutoDefault» и «По умолчанию', но когда открывается диалоговое окно, оно выбирается, и нажатие клавиши ввода нажимает кнопку редактирования.

Источник программы можно найти по адресу https://github.com/megamasha/FlashKard для всех, кто хочет попробовать его самостоятельно.Данное окно генерируется из файла «resultswindow.ui».

Это только я?Это ошибка?Просто интересно, может ли кто-нибудь увидеть какую-либо очевидную причину, почему это не работает (или, возможно, это просто не работает в моей системе Windows Vista)

1 Ответ

0 голосов
/ 25 февраля 2012

О QPushButton::default:

Кнопка с этим свойством, установленным в true (то есть диалоговое окно по умолчанию кнопка,) будет автоматически нажиматься, когда пользователь нажимает ввод, с одним исключением: если кнопка autoDefault в данный момент имеет фокус, нажата кнопка автозадания.

И что еще важнее:

Командные кнопки в диалогах по умолчанию являются автоматическими кнопками, т. Е. они становятся кнопкой по умолчанию автоматически при получении фокус ввода с клавиатуры.

Если вы явно не установите editButton ' autoDefault в значение false, это правда. Это может быть связано со спецификой Windows (без дополнительных подсказок Windows фокусирует элемент управления с самым низким идентификатором, что, вероятно, имеет место для editButton, так как он создается первым). Попробуйте либо установить autoDefault в false, либо явно вызвать continueButton.setFocus()

...