Wie simuliere ich Mausklicks in der GUI

Alles rund um die Programmierung mit Qt
Antworten
iphenion
Beiträge: 17
Registriert: 4. Januar 2008 15:40
Wohnort: Wetter
Kontaktdaten:

Wie simuliere ich Mausklicks in der GUI

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Dann schick halt die mouseEvents an das jeweilige Widget. QApplication::widgetAt ist dein Freund...
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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
iphenion
Beiträge: 17
Registriert: 4. Januar 2008 15:40
Wohnort: Wetter
Kontaktdaten:

Beitrag von iphenion »

Danke für diese Hinweise.
Das hat mir weitergeholfen.

Gruß, Peter
Antworten