[gelöst] mouse tracking einschalten wo?

Verschiedenes zu Qt
Antworten
gooze
Beiträge: 24
Registriert: 2. März 2009 09:49

[gelöst] mouse tracking einschalten wo?

Beitrag von gooze »

Hallo,

um meine Mauspositionen anzeigen zu können ohne die Maustasten zu drücken muss das Maustracking eingeschaltet werden. Das ist verstanden.

Aber wo muss das erfolgen? ich habe es im Konstruktor bei einem MainWindow Projekt gemacht und bekomme nicht den erhofften effekt. Es funktioniert immer nur wenn die Maustasten gedrückt sind.

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindowClass)
{
    ui->setupUi(this);
    setMouseTracking(true);
    connect(ui->actionBeenden, SIGNAL(triggered(bool)),
            this, SLOT(close()));
}
Mache ich das mit einem einfachen Widget Projekt geht es aber. Meine Vermutung war, dass ich das tracking für das falsche widget aktiviert habe aber nachdem ich es mit allen verfügbaren widgets durchgetestet habe und es mit keinem funktionierte, wurde mein Fragezeichen über dem Kopf immer größer.

Wo habe ich meinen Denkfehler?

Danke gooze
Zuletzt geändert von gooze am 13. März 2009 21:38, insgesamt 1-mal geändert.
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

du musst die qwidget-funktionen des jeweiligen elements überladen, um die Maus zu überwachen:
# virtual void mouseDoubleClickEvent ( QMouseEvent * event )
# virtual void mouseMoveEvent ( QMouseEvent * event )
# virtual void mousePressEvent ( QMouseEvent * event )
# virtual void mouseReleaseEvent ( QMouseEvent * event )
Mfg androphinx
gooze
Beiträge: 24
Registriert: 2. März 2009 09:49

Re: mouse tracking einschalten wo?

Beitrag von gooze »

gooze hat geschrieben:Hallo,
Aber wo muss das erfolgen? ich habe es im Konstruktor bei einem MainWindow Projekt gemacht und bekomme nicht den erhofften effekt. Es funktioniert immer nur wenn die Maustasten gedrückt sind.
Sagt eigentlich aus dass ich die Ereignishandler bereits überladen habe!

zur Vollständigkeit den überladenen Ereignishandler!

Code: Alles auswählen

void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    ui->lineEdit->setText(QString::number(event->x()));
    ui->lineEdit_2->setText(QString::number(event->y()));
    ui->lineEdit_3->setText(QString::number(event->globalX()));
    ui->lineEdit_4->setText(QString::number(event->globalY()));
}
mfg gooze
gooze
Beiträge: 24
Registriert: 2. März 2009 09:49

Beitrag von gooze »

ahhhhhhhhh,

ein wenig Spielerei mit dem Designer hat mir dann den erhofften Erfolg eingebracht.
Ich muss das Tracking für das MainWindow und für das Central Widget aktivieren. Dann erst geht es.

Da muss ich noch suchen warum das so ist. Vielleicht kann mir da ja jemand noch mal den genauen Zusammenhang erklären!

Danke gooze
Antworten