У меня есть приложение Qt (сервер), которое получает позиции и состояние мыши (нажатие мыши, отпускание или перемещение мыши) по локальной сети из другого приложения Qt. Я правильно читаю состояние и положение мыши, но я не могу генерировать поддельные сообщения в приложении сервера, чтобы имитировать перемещение мыши, события нажатия мыши.Создание (имитация) событий поддельной мыши в Qt
Сервер имеет всю логику в QGraphicsView для управления перемещением мыши и т. Д., И все работает так, как ожидается, когда оно будет вводиться с мыши на серверной машине.
Но как только я попытаюсь создать поддельные mouseEvents, прочитав положение мыши и состояние, отправленное из другого приложения, оно не работает.
Удивительно, но если я создаю фальшивые события и передаю их на сцену, как показано ниже, он генерирует mouseMoveEvents, но я хочу сделать это для QGraphicsView, поскольку он имеет логику обработки мыши в серверном приложении.
Это работает:
QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
pressEvent.setScenePos(QPointF(100, 100));
pressEvent.setButton(Qt::LeftButton);
pressEvent.setButtons(Qt::LeftButton);
QApplication::sendEvent(pGraphicsScene, &pressEvent);
Это не работает:
QMouseEvent eve((QEvent::MouseMove), QPoint(100,100),
Qt::NoButton,
Qt::NoButton,
Qt::NoModifier );
qApp->sendEvent(this , &eve);
Может кто-нибудь помочь мне понять, почему я не могу генерировать поддельные события для GraphicsView и как это может быть сделано.
Благодаря
Настроена 'yourGraphicsView-> setMouseTracking (истина)' для включения обнаружение событий mouseMove? – jbh