![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Гость_Саша_* |
![]()
Сообщение
#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. Но как было отмечено появляется дублирование клавишь. Что делать???!!! |
|
|
![]() |
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
А если попробовать так:
Как я понимаю идет речь о закрытии событий для кнопок: лево, право, вверх, вних и бекспэйс. Просто как написано в описании: bool QAxWidget::translateKeyEvent ( int message, int keycode ) const [virtual protected] Цитата If the function returns false the processing of the key event is ignored by ActiveQt, ie. the ActiveX control might handle it or not.
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 21.3.2025, 7:28 |