crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> 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. Но как было отмечено появляется дублирование клавишь.
Что делать???!!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ViGOur
  опции профиля:
сообщение 25.1.2008, 11:26
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


А если попробовать так:
     virtual bool translateKeyEvent(int message, int keycode) const
     {
         if (message >= WM_KEYFIRST && message <= WM_KEYLAST)
             return false;
         else
             return QAxWidget::translateKeyEvent(message, keycode);
     }
Как я понимаю идет речь о закрытии событий для кнопок: лево, право, вверх, вних и бекспэйс.

Просто как написано в описании: 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.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Саша_*
сообщение 25.1.2008, 11:36
Сообщение #3





Гости








    


Цитата(ViGOur @ 25.1.2008, 11:26) *
А если попробовать так:
     virtual bool translateKeyEvent(int message, int keycode) const
     {
         if (message >= WM_KEYFIRST && message <= WM_KEYLAST)
             return false;
         else
             return QAxWidget::translateKeyEvent(message, keycode);
     }
Как я понимаю идет речь о закрытии событий для кнопок: лево, право, вверх, вних и бекспэйс.

Просто как написано в описании: 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.



Попробовал. Теперь до скриптов не доходят клавиши. Я ж говорю. Проблема сводится к поговорке. "Нос вытянул - ножка увязла, ножку вытянул - нос увяз".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Саша   Web AxWidget   24.1.2008, 20:45
- - ViGOur   А как ты переопределил функцию translateKeyEvent? ...   24.1.2008, 20:52
- - ViGOur   А вот и ответ у тролей: ЦитатаSome key events happ...   24.1.2008, 21:45
- - Саша   Вначале я переопределил по-своему: просто "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


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 18:37