ich hab folgendes Problem wenn man über einer SpinBox am Mausrad dreht erhält diese den Focus. Ich möchte dies aber nicht sondern der Focus soll nur beim anklicken gesetzt werden. Über die FocusPolicy läst sich das Problem nicht lösen.
Ich hab mir eine SpinBox abgeleitet und das WheelEvent überschrieben und konnte so den Focus mit dem Mausrad abschalten. Nur leider funktoniert dann das ändern des Wertes über das Mausrad nicht mehr da nun beim Drehen sofort der Focus verloren geht. Weis hier jemand Rat.
Ich muss diesen alten Thread mal wieder ausgraben, da ich das (fast?) gleiche Problem auch habe.
Wenn focusPolicy = Qt::StrongFocus ist, dürfte die SpinBox doch gar keinen Focus über das MouseWheel kriegen, oder?
Angeblich in Qt 4.6.3 behoben. Funktioniert bei mir aber nicht. Ich setze focusPolicy auf StrongFocus, aber die SpinBox reagiert trotzdem auf das Mausrad. Anschließend haben dann zwei Widgets den Focus bzw. es sieht zumindest so aus.
So, Erkenntnisgewinn ...
Auf das Mausrad zu reagieren und den Fokus zu erhalten scheinen zwei unabhängige Dinge zu sein. Wenn focusPolicy nicht Qt::WheelFocus ist, dann erhält die SpinBox (oder was auch immer) tatsächlich keinen Fokus über das Mausrad. Die SpinBox reagiert aber trotzdem auf das Mausrad (wheelEvent), indem sie Step-weise hoch bzw. runter zählt. Dabei wird der Text markiert, so dass es so aussieht als hätte die SpinBox den Fokus.
Unschön.
Ableiten eigener Klassen von allen Steuerelementen (zumindest SpinBox, DoubleSpinBox, ComboBox, ...) nur um nicht auf's Mausrad zu reagieren (wenn kein Fokus) finde ich sehr lästig.