Web AxWidget, WebBrowser в Qt |
Здравствуйте, гость ( Вход | Регистрация )
Web AxWidget, WebBrowser в Qt |
Гость_Саша_* |
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 символа. В Интернете я после всего этого наткнулся на страницу http://www.crossplatform.ru/documentation/...baxwidget-h.php. Там тоже переопределяется ф-я 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. Но я ж говорю, что тогда не доходят сообщения до скриптов. Может им снова баг написать? Я только пока не знаю как. |
|
|
Текстовая версия | Сейчас: 27.12.2024, 19:35 |