Как сделать переход между полями ввода на форме нажимая Enter |
Здравствуйте, гость ( Вход | Регистрация )
Как сделать переход между полями ввода на форме нажимая Enter |
sindbad07 |
4.5.2010, 12:59
Сообщение
#1
|
Студент Группа: Участник Сообщений: 21 Регистрация: 28.4.2010 Пользователь №: 1671 Спасибо сказали: 0 раз(а) Репутация: 0 |
Подскажите почему на форме переход между полями ввода осуществляется только при нажатии Tab, а как же Enter?
|
|
|
Litkevich Yuriy |
4.5.2010, 13:08
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
sindbad07 |
4.5.2010, 13:12
Сообщение
#3
|
Студент Группа: Участник Сообщений: 21 Регистрация: 28.4.2010 Пользователь №: 1671 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
molchanoviv |
4.5.2010, 13:16
Сообщение
#4
|
Старейший участник Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: 5 |
отлавливай KeyPressEvent и обрабатывай нажатие клавиши Enter
|
|
|
sindbad07 |
4.5.2010, 13:26
Сообщение
#5
|
Студент Группа: Участник Сообщений: 21 Регистрация: 28.4.2010 Пользователь №: 1671 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Litkevich Yuriy |
4.5.2010, 15:37
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
arial |
5.5.2010, 7:02
Сообщение
#7
|
Студент Группа: Участник Сообщений: 39 Регистрация: 27.9.2009 Пользователь №: 1121 Спасибо сказали: 9 раз(а) Репутация: 0 |
отлавливай KeyPressEvent и обрабатывай нажатие клавиши Enter Возможно удобнее будет использовать QObject::eventFilter |
|
|
alcionov |
5.5.2010, 15:43
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 3.5.2010 Пользователь №: 1683 Спасибо сказали: 0 раз(а) Репутация: 0 |
отлавливай KeyPressEvent и обрабатывай нажатие клавиши Enter Именно это я сейчас и пробую делать без такого же успеха: 1. Создаю окно вручную от QWidget 2. Создаю несколько QLineEdit, передавая им это окно как парент 3. Всё это нормально показываю на экране, где первый из едитов имеет фокус ввода 4. По наступлении события выполняю focusNextChild() 5. Ничего не происходит Пробовал напрямую: QLineEdit::clearFocus() и QLineEdit::setFocus() - фокус стоит как вкопанный. Может быть кто-то пробовал реально эту технологию? Буду признателен за подсказку. PS Такое надо, когда экранные формы не могут быть заранее заготовлены, например, дизайнером, а генерятся по ходу выполнения. |
|
|
arial |
6.5.2010, 7:04
Сообщение
#9
|
Студент Группа: Участник Сообщений: 39 Регистрация: 27.9.2009 Пользователь №: 1121 Спасибо сказали: 9 раз(а) Репутация: 0 |
Именно это я сейчас и пробую делать без такого же успеха: После пункта 1 реализуй для окна eventFilter:1. Создаю окно вручную от QWidget 2. Создаю несколько QLineEdit, передавая им это окно как парент 3. Всё это нормально показываю на экране, где первый из едитов имеет фокус ввода 4. По наступлении события выполняю focusNextChild() 5. Ничего не происходит После пункта 2 для каждого из потомков инсталлируй eventFilter окна-родителя. Всё будет работать. |
|
|
alcionov |
6.5.2010, 14:45
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 3.5.2010 Пользователь №: 1683 Спасибо сказали: 0 раз(а) Репутация: 0 |
После пункта 1 реализуй для окна eventFilter: Спасибо за скорый ответ! Значит, если я правильно понял, смысл в том, что выполнять управление фокусом надо находясь в потоке фильтрации событий? В моём же случае дело в том, что события фильтруются в другом месте, так как мы имеем дело с устройством, где экран и клавиатура - это совершенно разные, никак не связанные устройства, с точки зрения Qt у нас просто нет клавиатуры. Возникает вопрос: может быть мне надо вместо того, чтобы тупо выполнять функцию focusNextChild(), послать пользовательское сообщение, чтобы его отфильтровала предложенная тобой функция заместо нажатия на клавишу? Я не знаю, позволяет ли Qt пользовательские сообщения, но думаю, что такая продвинутая вещь не может не предусматривать этого. Как ты считаешь? |
|
|
Текстовая версия | Сейчас: 22.11.2024, 16:05 |