La génération (simulation) de faux événements de la souris dans Qt

J'ai une application Qt (serveur) qui reçoit les positions de la souris et de l'etat ( de la souris enfoncé, publié ou de déplacement de la souris) sur le réseau local à partir d'une autre application Qt. J'ai lu dans l'état de la souris et de le positionner correctement, mais je ne suis pas en mesure de générer de faux messages dans le serveur d'application pour simuler le déplacement de la souris, la souris enfoncé événements.

Le serveur a de la logique dans QGraphicsView à la poignée de déplacement de la souris, etc et tout fonctionne comme prévu quand il fait des commentaires de la souris sur la machine serveur.

Mais une fois que j'ai essayer de générer de faux mouseEvents par la lecture de la position de la souris et de l'etat envoyés à partir d'autres applications, il ne fonctionne pas.

Étonnamment, si je créer de faux événements et de les passer à la scène comme indiqué ci-dessous, il génère mouseMoveEvents mais je veux le faire pour QGraphicsView, comme c'est la logique de la manipulation de la souris dans l'application serveur.

Cela fonctionne :

QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
pressEvent.setScenePos(QPointF(100, 100));
pressEvent.setButton(Qt::LeftButton);
pressEvent.setButtons(Qt::LeftButton);
QApplication::sendEvent(pGraphicsScene, &pressEvent);

Cela ne marche pas :

    QMouseEvent eve( (QEvent::MouseMove), QPoint(100,100), 
        Qt::NoButton,
        Qt::NoButton,
        Qt::NoModifier   );

qApp->sendEvent(this , &eve);

Quelqu'un peut-il m'aider à comprendre pourquoi je ne peux pas générer de faux événements pour GraphicsView et comment cela peut-il être fait.

Grâce

Avez-vous mis yourGraphicsView->setMouseTracking(true) pour l'activation de la détection de mouseMove événements?

OriginalL'auteur user948999 | 2013-09-17