Seite 1 von 1

[gelöst] eventFilter auf QDoubleSpinBox

Verfasst: 12. April 2007 10:38
von Flachkoepper
Moin,

folgendes Problem: Ich will in einem Dialog Mausklicks auf eine QDoubleSpinBox abfangen. Dazu in meinem Dialog folgender Code:

Code: Alles auswählen

 MyDlg::MyDlg() {
...
myDoubleSpinBox->installEventFilter(this);
...
}

Code: Alles auswählen

bool MyDlg::eventFilter(QObject *obj, QEvent *ev) 
{
if(QString::compare(obj->metaObject()->className(),"QDoubleSpinBox") == 0 ) {
		if( ev->type() == QEvent::MouseButtonPress ) {
			QMouseEvent* me = static_cast<QMouseEvent*>(ev);
 			if( me->button() == Qt::LeftButton)
				qDebug() << "links";
			if( me->button() == Qt::RightButton)
				qDebug() << "rechts";
			return QObject::eventFilter(obj,ev);
		} else {
			return false;
		}
	} else {
         // pass the event on to the parent class
		return QObject::eventFilter(obj, ev);
	}
}
Verhalten des Programms: Es werden nur die Klicks abgefangen, die auf die Pfeil oben/ Pfeil unten - Widgets gehen, die Klicks auf das QLineEdit bleiben unbehandelt. Gerade auf die bin ich aber scharf :-(
Irgendwer ne Idee?

Viele Grüße,
Flachkoepper

Verfasst: 12. April 2007 11:19
von macman
Die Lösung hast Du schon selbst genannt, vermute ich mal.

Verfasst: 12. April 2007 11:44
von Flachkoepper
Du meinst, den EventFilter direkt auf das Lineedit legen? Dat Ding is aber protected.

Verfasst: 12. April 2007 11:48
von upsala
Na und? Ein Problem wäre es erst, wenn es private wäre...

Verfasst: 12. April 2007 12:02
von Flachkoepper
Vielleicht könnt ihr mir ein wenig auf die Sprünge helfen? Ich sehe nicht, wie ich aus meinem Dlg an das LineEdit komme, ohne mir eine eigene DoubleSpinBox abzuleiten.

Verfasst: 12. April 2007 12:30
von upsala
Dann leite es halt ab. Das ist weniger Code als in diesem Thread bereits schrieben wurde. Die andere Möglichkeit wäre noch über QObject::findChildren(...).

Verfasst: 12. April 2007 13:34
von Flachkoepper
Danke! findChildren war das, was mir nicht eingefallen war. Jetzt klappts.

Beste Grüße,
Flachkoepper