Russian Qt Forum

Qt => Общие вопросы => Тема начата: fuCtor от Август 11, 2009, 06:53



Название: Снова про эмуляцию устройств ввода
Отправлено: fuCtor от Август 11, 2009, 06:53
Читал FAQ, читал форум, читал документацию, делал все как написано, но сообщения в виджет который фокусе приходят (отправитель), а в виджет получатель после пересылки не долетают.

Код
C++ (Qt)
QPoint point = r_->mapFromGlobal(event->globalPos());
QWheelEvent * new_event = new QWheelEvent(point , event->delta(), event->buttons(),
       event->modifiers(), event->orientation());
QApplication::postEvent(r_, new_event);
 

Уже не пойму в какую сторону и копать.


Название: Re: Снова про эмуляцию устройств ввода
Отправлено: MoPDoBoPoT от Август 11, 2009, 13:07
Попробуй метод bool QCoreApplication::sendEvent( QObject * receiver, QEvent * event ), в отличие от предыдущего метода событие передается получателю сразу напрямую, а не помещается в очередь. Но если событие передается в другой поток, то без void QCoreApplication::postEvent( QObject * receiver, QEvent * event ) все-таки не обойтись, т.к. она потобезопасна.


Название: Re: Снова про эмуляцию устройств ввода
Отправлено: fuCtor от Август 11, 2009, 14:25
через sendEvent тоже пробовал, никак.
Даже прошолся отладчиком пошагово по всему стеку вызовов. Событие не приходит в назначенное место. Отклоняется на уровне толи QWidget толи QAbstractScrollArea, в обработчике сообщений объекта.

PS как видно из кода выше, пытаюсь передать сообщение о скроле в одном объекте в другой (синхронизировать их).