Seite 1 von 2
Mausklick simulieren
Verfasst: 18. April 2011 20:36
von etjazzman
Hallo zusammen,
gibt es eine Möglichkeit einen Mausklick zu simulieren?
Das heißt ich drück einen Button, die Maus wandert an eine Position und löst einen Links-, oder Rechtsklick aus.
Die Positionierung geht mit:
Aber wie kann man mit Qt einen Mausklick erzeugen?
Danke für jede Info!
Verfasst: 18. April 2011 20:55
von upsala
Erzeug dir ein QMouseEvent und sende es an das betreffende Widget.
Verfasst: 19. April 2011 13:12
von etjazzman
Hab jetzt ein Event erstellt:
Code: Alles auswählen
QMouseEvent *clickevent = new QMouseEvent(QEvent::MouseButtonPress, point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(this, clickevent);
Wie sende ich jetzt den Event an mein Mainwindow?
Verfasst: 19. April 2011 17:02
von upsala
Code: Alles auswählen
void QCoreApplication::postEvent ( QObject * receiver, QEvent * event )
Verfasst: 20. April 2011 14:55
von etjazzman
Irgendwie passiert da nichts.
Code: Alles auswählen
#include "mainwindow.h"
#include <QtGui/QMouseEvent>
MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags flags)
{
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(released()), this, SLOT(test()));
}
void MainWindow::test(){
point.setX(1000);
point.setY(400);
clickevent = new QMouseEvent(QEvent::MouseButtonPress, point, Qt::RightButton, Qt::RightButton, Qt::NoModifier);
QCoreApplication::postEvent(this, clickevent);
}
MainWindow::~MainWindow()
{}
Mache ich irgendwas falsch?
Verfasst: 20. April 2011 15:58
von pfid
Was soll denn passieren?
Verfasst: 20. April 2011 16:29
von etjazzman
Eigentlich sollte der Mauszeiger, wenn ich den Button drücke, zu den Koordinaten 1000 und 400 springen und dort ein Rechtsklick ausführen.
Oder macht man das anders?
Verfasst: 20. April 2011 17:25
von upsala
Macht das event etwa gar nichts, oder nur einen Teil?
Mal davon abgesehen, du erwartest einen click, sendest aber nur ein press.
Verfasst: 20. April 2011 19:48
von etjazzman
So wie es aussieht macht es gar nichts.
Was ist der Unterschied zwischen "press" und "click"?
Hat da jemand ein gutes Beispiel wo es funktioniert?
Verfasst: 20. April 2011 19:54
von Christian81
Sorry aber was soll das ganze - was ist an der Position was Du nicht über direkten Weg oder per Signal/Slot ereichbar ist??
Verfasst: 21. April 2011 11:28
von etjazzman
Christian81 hat geschrieben:Sorry aber was soll das ganze - was ist an der Position was Du nicht über direkten Weg oder per Signal/Slot ereichbar ist??
Schwer konstruktive Vorschläge zu machen?
Ich bin nicht der Qt-Experte deswegen suche ich Rat.
Ich hoffe hier sind nicht alle so...?
Hat jemand noch Vorschläge wie man einen Mausklick simulieren?
Verfasst: 21. April 2011 12:15
von Christian81
etjazzman hat geschrieben:
Hat jemand noch Vorschläge wie man einen Mausklick simulieren?
Der Vorschlag war schon da. Wenn es nicht geht - minimales kompilierbares Beispiel!
Aber warum man einen Mausklick simulieren will ist eigentlich die spannendere Frage da es im Grunde unnötig ist.
Verfasst: 21. April 2011 12:41
von etjazzman
Ich hab ein Touch-Gerät. Dieses sendet mir Daten, die ich auswerte. Mit QCursor ist es mir schon gelungen die Daten als Koordinaten zu interpretieren und an der richtigen Stelle den Mauszeiger zu setzen.
Jetzt ist das Problem, dass ich mit dem Touch-Gerät auch ein Klick erzeugen möchte. Da wollte ich wissen ob das in Qt möglich ist.
Deswegen würde ich gerne wissen, wenn ein Touch erkannt wird soll eine Funktion aufgerufen werden, die einen Mausklick erzeugt.
Ich hoffe es ist jetzt etwas klarer geworden.
Verfasst: 21. April 2011 13:21
von jerry42
vielleicht hilft Dir das:
http://doc.trolltech.com/4.7/qapplication.html#widgetAt
das Widget kannst du dann casten und je nachdem was für ein widget es ist, den entsprechenden Slot aufrufen, z.B. clicked() für einen Button.
edit: aber vielleicht hab ich es auch missverstanden, und du willst durch den Mausklick gar kein spezielles Widget ansprechen, sondern an der ganz spezifischen Position einen Rechtsklick ausführen?! In dem Fall bringt Dir die Methode vermutlich nichts.
Verfasst: 21. April 2011 14:26
von pfid
etjazzman hat geschrieben:Ich hab ein Touch-Gerät. Dieses sendet mir Daten, die ich auswerte. Mit QCursor ist es mir schon gelungen die Daten als Koordinaten zu interpretieren und an der richtigen Stelle den Mauszeiger zu setzen.
Jetzt ist das Problem, dass ich mit dem Touch-Gerät auch ein Klick erzeugen möchte. Da wollte ich wissen ob das in Qt möglich ist.
Deswegen würde ich gerne wissen, wenn ein Touch erkannt wird soll eine Funktion aufgerufen werden, die einen Mausklick erzeugt.
Ich hoffe es ist jetzt etwas klarer geworden.
Sollte das nicht der Treiber des Geräts erledigen?