Здравствуйте, гость ( Вход | Регистрация )
| Гость_Саша_* |
24.1.2008, 20:45
Сообщение
#1
|
|
Гости |
Проблеммы встроить WebBrowser в Qt-приложение не составляет. НО получившийся браузер НЕ ВСЕ клавиши пускает, например, до JScript-ов. В частности не пускает стрелочки, Backspace, PgUp, PgDown. В чём несложно убедиться написав такой HTML-код:
CODE <script> function on_keydown( e ) { var keyChar = String.fromCharCode(event.which); window.status = event.keyCode; document.all["StatusLine"].innerText = event.keyCode; } document.onkeydown = on_keydown; </SCRIPT> <BODY> ppppppppp </BODY> <P ID=StatusLine> aaaaa </P> и сравнив результаты его работы в обычном IExplorer-е или (другом браузере) и браузере написаном на Qt. После нескольких дней поиска была найдена виртуальная ф-я класса QAxWidget::translateKeyEvent. Если снаследовать этот класс и переопределив эту ф-ю возвращать в ней всегда true, все клавиши начинают доходить, НО теперь все те проблемные клавиши начинают приходить дважды, например, в полях ввода. что несложно проверить на следующем HTML-коде: CODE <HTML> <BODY> <INPUT TYPE=TEXT></INPUT> </BODY> </HTML> Чтобы увидеть нехороший эффект нужно ввести в поле редактирования буквы, а потом поперемещать в нём текстовый курсор при помощи клавиш "вправо", "влево". Курсор будет смещаться сразу на 2 символа. В Интернете я после всего этого наткнулся на страницу Link. Там тоже переопределяется ф-я QAxWidget::translateKeyEvent. Но как было отмечено появляется дублирование клавишь. Что делать???!!! |
|
|
|
![]() |
| Гость_Саша_* |
25.1.2008, 11:19
Сообщение
#2
|
|
Гости |
Вначале я переопределил по-своему: просто "return true". потом попробовал как в примере. Результат то-же - двойное нажатие. Если возвращать всегда false - то не доходят вообще никакие клавиши. Ещё один интересный факт: ф-я translateKeyEvent вызывается 1 РАЗ! А нажатий оказывается 2. Даже хуки не показывают 2-ное нажатие и MSVisual-овский Spy.
|
|
|
|
| Гость_Саша_* |
25.1.2008, 11:32
Сообщение
#3
|
|
Гости |
ViGOur, залез я по твоей ссылке к тролям...
Как я понял, они этот баг вначале хотели исправить в 4-ой версии, а потом всё-таки отвергли (2007-12-06 17:25 - Resolution set to 'Rejected'). И сказали, что нужно возвращать false. Но я ж говорю, что тогда не доходят сообщения до скриптов. Может им снова баг написать? Я только пока не знаю как. |
|
|
|
Саша Web AxWidget 24.1.2008, 20:45
ViGOur А как ты переопределил функцию translateKeyEvent? ... 24.1.2008, 20:52
ViGOur А вот и ответ у тролей:
ЦитатаSome key events happ... 24.1.2008, 21:45
ViGOur А если попробовать так:
virtual bool translateKe... 25.1.2008, 11:26
Саша Цитата(ViGOur @ 25.1.2008, 11:26) А если ... 25.1.2008, 11:36
ViGOur Раз отвергли, то нужно сначала попробовать самому ... 25.1.2008, 11:37
Саша Цитата(ViGOur @ 25.1.2008, 11:37) Раз отв... 25.1.2008, 11:50
Саша Цитата(ViGOur @ 25.1.2008, 11:37) У меня ... 25.1.2008, 11:54
ViGOur Стоп, а тебе нужно, чтобы кнопки-стрелочки и бексп... 25.1.2008, 11:56
Саша Цитата(ViGOur @ 25.1.2008, 11:56) Стоп, а... 25.1.2008, 12:00
ViGOur Цитата(Guest_Саша_* @ 25.1.2008, 11:54) Д... 25.1.2008, 11:57
ViGOur Тогда оформлять как баг, или попробовать заморочит... 25.1.2008, 12:05
Саша Цитата(ViGOur @ 25.1.2008, 12:05) Тогда о... 25.1.2008, 12:08
ViGOur угу, нужно лезть, заодно и получше изучишь Qt изну... 25.1.2008, 12:13
Alexandr Я бы использовал ,на вашем месте, модуль QtWebKit.... 27.1.2008, 12:51
klochec_v еще такой вопрос у когонить была такая проблема чт... 21.2.2008, 14:16![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 15.12.2025, 4:27 |