Здравствуйте, гость ( Вход | Регистрация )
| Гость_Саша_* |
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. Но как было отмечено появляется дублирование клавишь. Что делать???!!! |
|
|
|
![]() |
|
ViGOur |
24.1.2008, 21:45
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40
|
А вот и ответ у тролей:
Цитата Some key events happen twice with ActiveX controls hosted by QAxWidget, this does not happen for all key presses, but usually happens with accelerators. Link----- This behavior is as per design, best way to avoid this in your control is to re-implement the translateKeyEvent of QAxWidget & return false. The default QAxWidget implementation returns true in this scenario, which inturn sends the message directly to the control's window procedure. This is required for common servers like Internet Explorer and Microsoft Office. В общих словах, как я понял, в translateKeyEvent нужно возвращать не true, а false. |
|
|
|
Саша Web AxWidget 24.1.2008, 20:45
ViGOur А как ты переопределил функцию translateKeyEvent? ... 24.1.2008, 20:52
Саша Вначале я переопределил по-своему: просто "re... 25.1.2008, 11:19
Саша ViGOur, залез я по твоей ссылке к тролям...
Как я ... 25.1.2008, 11:32
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![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 11.2.2026, 16:05 |