Seite 1 von 1

[gelöst] mouse tracking einschalten wo?

Verfasst: 13. März 2009 13:19
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

Verfasst: 13. März 2009 13:52
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

Re: mouse tracking einschalten wo?

Verfasst: 13. März 2009 14:19
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

Verfasst: 13. März 2009 14:31
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