![]() |
|
![]() ![]() ![]() |
|
ir4y |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 3.6.2008 Репутация: нет Всего: нет |
Столкнулся со следующей проблемой
есть форма на форме несколько кнопок между кнопками переключаюсь с помощью Tab что бы нажать на кнопку на клавиатуре надо нажать Пробел как сделать так что бы кнопка нажималась по Enter Думал сделать через QAction но у QPushButton нет метода setAction Делать класс наследник для QPushButton не получится так как проект большой и кнопок в нем много.... |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
То, что ты хочешь сделать - не стандартное поведение. Если хочешь шокировать этим пользователей своей программы, то вперед.
Можно сделать "promote to ..." в дизайнере, чтобы безболезненно переопределить метод QPushButton::keyPressEvent. Если это кажется тоже сложным, то можно использовать QObject::installEventFilter. Если и это покажется оверхедом, то стоит задуматься над тем действительно ли это тебе нужно. |
|||
|
||||
KL7 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
Вероятно я что-то не так понял, но хотелось бы уточнить... Запускаю examples/dialogs/standarddialogs. Перемещать фокус по кнопкам можно как табом, так и стрелками (вверх-вниз, вправо-влево). Нажать на кнопку могу как пробелом, так и enter-ом - оба варианта работают как в главном окне, так и во всех диалогах. Если ни у одной из кнопок в диалоге нет фокуса, то при нажатии enter-а нажимается default кнопка. Ето не то, что Вам нужно? Если ето то, то что тут нестандартного? ![]() PS Упоминаний про оси не вижу, но у меня все ето творится под Windows XP. |
|||
|
||||
ir4y |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 3.6.2008 Репутация: нет Всего: нет |
2 KL7
программа работает в slackware linux 2 SABROG пользователям надо чтобы программа вела себя именно так )
спасибо так наверно и сделаю |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
То, что enter'ом можно нажать только default кнопку, а не любую вообще. У класса QPushButton переопределен keyPressEvent и если там встречается нажатие кнопки Return или Enter (большой enter и enter на NumPad'e), то проверяется, если кнопка default, то нажимается, если нет, то эвент передается родительскому классу QAbstractButton, где в его методе keyPressEvent удачно игнорится без какой либо возможности на это повлиять через настройки, шорткаты и экшены. Зато у QWidget'a есть метод addAction через который можно задать шорткат. Но он не будет работать как надо с QPushButton. Максимум чего удалось добиться это перемещение фокуса с кнопки на другую кнопку по нажатию на enter. Это сообщение отредактировал(а) SABROG - 19.10.2009, 21:16 |
|||
|
||||
JimCary |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.1.2008 Репутация: нет Всего: нет |
проблема решается если форма является наследником QDialoig и autoDefault у всех кнопок установлен
Это сообщение отредактировал(а) JimCary - 18.3.2011, 19:07 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |