Seite 1 von 1

Wie simuliere ich Mausklicks in der GUI

Verfasst: 21. Februar 2008 10:10
von iphenion
Hallo,

ich möchte Mausklicks in mein Hauptfenster simulieren, in der Hoffnung, dass QT die selben Reaktionen zeigt, als hätte ich wirklich mit der Maus irgendwo drauf geklickt.

Ich versuche das so:

Code: Alles auswählen

	QPoint pos(100,80);
	QMouseEvent event(QEvent::MouseButtonPress, pos,Qt::LeftButton, 0 , 0);
	QApplication::sendEvent(mainwin, &event);
	QMouseEvent event2(QEvent::MouseButtonRelease, pos,Qt::LeftButton, 0, 0);
	QApplication::sendEvent(mainwin, &event2);
Ich sehe auch, dass die Events ankommen:

Code: Alles auswählen

void Mainwin::mousePressEvent(QMouseEvent *event) {
	QPoint lastPos = event->pos();
	qDebug ("Mouseklick: %d,%d, Global: %d,%d",lastPos.x(),lastPos.y(),event->globalPos().x(),event->globalPos().y());
	
}
Aber wenn nun ein Button an der pos Koordinate liegt, dann erhalte ich weder ein mouseEvent noch wird der Button (von QT) betätigt.

Schicke ich den Event an den Button selbst, dann wird er aktiviert.
Habe auch schon mit globalPos experimentiert, leider ohne Erfolg.

Gibt es da eine Lösung?

Gruß, Peter

Verfasst: 21. Februar 2008 11:23
von upsala
Dann schick halt die mouseEvents an das jeweilige Widget. QApplication::widgetAt ist dein Freund...

Verfasst: 22. Februar 2008 13:20
von solarix
Und wenn du dann das Widget gefunden hast (s. upsala: 'widgetAt' oder 'findChild'), kannst du die Events auch gleich bequem ueber die Test-Library erledigen:
http://doc.trolltech.com/4.3/qtest.html#mouseClick

Verfasst: 26. Februar 2008 11:43
von iphenion
Danke für diese Hinweise.
Das hat mir weitergeholfen.

Gruß, Peter