Russian Qt Forum

Qt => Общие вопросы => Тема начата: Alex_cs_gsp от Сентябрь 20, 2010, 16:12



Название: Генерация событий в Qt
Отправлено: Alex_cs_gsp от Сентябрь 20, 2010, 16:12
Воспроизвел пример из книгии Шлее. Для кулайнэдит установил свой фильтр событий, который высылает событие QKeyEvent имитирующее нажатие клавиши А, если была нажата клавиша Z (стр.307). Все работает. Я решил проверить (под виндой), что происходит с оконными сообщениями, при помощи Spy. Так вот, окно получает три сообщения WM_KEYDOWN, WM_CHAR и WM_KEYUP, которые соответствуют клавиши Z, как и должно быть, но при этом окно не получает какого-либо сообщения для клавиши A, нажатие которой эмулируется, хотя последняя появляется в виджете???


Название: Re: Генерация событий в Qt
Отправлено: Авварон от Сентябрь 20, 2010, 16:19
а зачем высылать виндовое сообщение?
все правильно - приходит сообщение от ОС, его заворачивают в QEvent и отправляют получателю.
Имитируем нажатие клавиши - делаем QEvent и отправляем его получателю. 1й шаг скипаем, ибо в нем мало профита


Название: Re: Генерация событий в Qt
Отправлено: Alex_cs_gsp от Сентябрь 20, 2010, 16:26
QCoreApplication::sendEvent(...), не высылает виндовое сообщение, если для винды скомпилировано, или это от обстоятельств зависит?


Название: Re: Генерация событий в Qt
Отправлено: Авварон от Сентябрь 20, 2010, 16:29
вообще не посылает, это не нужно (по логике разрабов Qt)


Название: Re: Генерация событий в Qt
Отправлено: Alex_cs_gsp от Сентябрь 20, 2010, 16:31
Тогда понятно.  :-*