Verwendung von QCoreApplication::postEvent zum Einfügen synthetischer Eingabeereignisse

Verwendung von QCoreApplication::postEvent zum Einfügen synthetischer Eingabeereignisse

Können Sie QApplication::widgetAt() verwenden um das richtige Widget an der Position zu finden und dann darauf zu posten?

QPoint pos(x, y);
QMouseEvent *event = new QMouseEvent(type, pos, mouse_button, mouse_buttons,  Qt::NoModifier);
QWidget *receiver = QApplication::widgetAt(pos);
QCoreApplication::postEvent(receiver, event);

Ich würde jedoch nicht erwarten, dass Sie dies für die Schlüsselereignisse tun müssten. Sie sollten an das fokussierte Widget gesendet werden (QApplication::focusWidget() ).

Leider habe ich nichts davon getestet.


Ich würde vorschlagen, etwas Code zu posten, da die Signatur laut Dokumentation lautet:

void QCoreApplication::postEvent ( QObject * receiver, QEvent * event ) [static]

Haben Sie versucht, einen Zeiger auf den entsprechenden QObject zu geben als receiver Argument?

(Bearbeiten: beachten Sie, dass QWidget erbt QObject )