![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
kwisp |
![]()
Сообщение
#1
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
народ если кто сталкивался.
программа - это виджет на весь экран на нем менеджер размещения один из элементов браузер QtWebKit. программа стартует предлагая ввести логин и пароль в диалоговое окно после удачного логина диалог скрывается и стартует загрузка странички в браузере, страничка содержит в себя поля ввода на них фокус автоматически не устанавливается(важно). после загрузки странички на страничке фокус есть и по табуляции он переходит от элемента странички к элементу, проблема в том что не отображается мигающая полосочка показывающая куда будет вводиться следующий символ. хотя сами символы благополучно попадают в поле ввода. ![]() |
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Такое ощущение, что в данном случае проблемы с отрисовкой.
|
|
|
kwisp |
![]()
Сообщение
#3
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur, я проверял даже после загрузки браузера посылал ему с помощью sendEvent() QShowEvent и результат тотже. я считаю что эта штука присутствует в qt в связи с тем что возможно события клавиотуры принимает браузер а фокус ввода на каком либо другом виджете. проблему естественно я уже решил() желаемая мигающая полоска появляется(я управляю фокусом в браузере из программы с помощью яваскрипта на страничке который устанавливает фокус куда мне нужно). однако все же интересно куда она девается при первой загрузке ???....
|
|
|
kwisp |
![]()
Сообщение
#4
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
наткнулся на нудную неинтересную вещь.
получилось так что после того как делаешь 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. почему то всегда с ней проблемы и неясности. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 6.5.2025, 2:52 |