setFocus() grabKeyboard() фокус, мигающий курсор, фокус есть события приходят а мигающей полосочки в поле ввода нет |
Здравствуйте, гость ( Вход | Регистрация )
setFocus() grabKeyboard() фокус, мигающий курсор, фокус есть события приходят а мигающей полосочки в поле ввода нет |
kwisp |
30.1.2009, 13:11
Сообщение
#1
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
народ если кто сталкивался.
программа - это виджет на весь экран на нем менеджер размещения один из элементов браузер QtWebKit. программа стартует предлагая ввести логин и пароль в диалоговое окно после удачного логина диалог скрывается и стартует загрузка странички в браузере, страничка содержит в себя поля ввода на них фокус автоматически не устанавливается(важно). после загрузки странички на страничке фокус есть и по табуляции он переходит от элемента странички к элементу, проблема в том что не отображается мигающая полосочка показывающая куда будет вводиться следующий символ. хотя сами символы благополучно попадают в поле ввода. полосочка появляется если сменить фокус вручную. т.е. нажать к примеру альтаб а потом вернуться обратно и полосочка мигает.... странность однако. |
|
|
ViGOur |
30.1.2009, 14:33
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Такое ощущение, что в данном случае проблемы с отрисовкой.
|
|
|
kwisp |
30.1.2009, 14:43
Сообщение
#3
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
ViGOur, я проверял даже после загрузки браузера посылал ему с помощью sendEvent() QShowEvent и результат тотже. я считаю что эта штука присутствует в qt в связи с тем что возможно события клавиотуры принимает браузер а фокус ввода на каком либо другом виджете. проблему естественно я уже решил() желаемая мигающая полоска появляется(я управляю фокусом в браузере из программы с помощью яваскрипта на страничке который устанавливает фокус куда мне нужно). однако все же интересно куда она девается при первой загрузке ???....
|
|
|
kwisp |
5.2.2009, 18:42
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
наткнулся на нудную неинтересную вещь.
получилось так что после того как делаешь show() главному окну получаешь последнее со всеми дочерними виджетами на экране. тут как я понял из документации срабаотывает некий менеджер установки фокуса, который ставит фокус ввода с клавиотуры подходящему виджету. при том что он работает не в обработчике showEvent() в других потрохах. Цитата if focus has never been in this window before and you know where focus should start out, call QWidget::setFocus() on the widget which should receive focus before you call QWidget::show() it. If you don't, Qt will pick a suitable widget. setFocus() по ходу получается что устанавливает фокус на виджет при следующем его показе.!!! а не сразу добился того чтобы в поле ввода странички браузера появилась каретка(текстовый курсор ввода) тем что в обработчике сигнала браузера loadFinished(bool) вызвал один за другим два метода this->setFocus(); this->show(); достаточно сделать при первой загрузке браузера и каретка станет появляться. вообще для себя понял что фокус одна из самых скользких тем в Qt. почему то всегда с ней проблемы и неясности. |
|
|
Текстовая версия | Сейчас: 28.12.2024, 11:26 |