Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kuriose Wechselwirkung: EventFilter beeinflusst Scrollview



Kirsche
08-10-2005, 18:59
Hallo Leute,

nun habe ich ein sehr seltsames Problem:

Ich habe es gestern endlich hinbekommen, eine Pixmap zu scrollen. Ich habe dazu QScrollview abgeleitet, ein Label auf den viewport gepackt und mit bitBlt meine Pixmap auf das Label kopiert (setPixmap ist zu langsam). Das klappt auch wunderbar.

Nun soll aber der Cursor seine Form ändern, wenn man mit der Maus über einen bestimmten Bereich fährt. Als mein Fenster noch ein QWidget und keine QScrollview war, klappte das auch wunderbar ( ich habe "this->setMouseTracking( true )" benutzt ).
Jetzt geht das nicht mehr. Also habe ich "this->viewport()->setMouseTracking( true )" verwendet. Aber wie komme ich nun an das MoveEvent des viewports heran? Es gibt nur das paintEvent.

Ich habe es dann mit einem Eventfilter auf dem Label versucht. Das klappt auch. Allerdings - sehr seltsam - ist nun die Scrollbar tot. Sie ist noch da, weil ich eingestellt habe, dass sie immer da sein soll, aber man kann sie nicht benutzen. Sobald ich "bool MyWidget::eventFilter( QObject* obj, QEvent* event ) benutze, geht sie nicht mehr. Woran kann das liegen? :confused: :confused:

Vielen Dank,

anda_skoa
08-10-2005, 19:16
Vielleicht hilft dir contentsMouseMoveEvent

Ciao,
_

Kirsche
08-10-2005, 21:37
Hallo anda_skoa,

"contentsMouseMoveEvent" funktioniert, wenn ich eine Maustaste drücke. Das Problem ist nun, dass sich der Mauszeiger verändern soll, wenn man keine Taste drückt. Dazu benutzt man eigentlich "->setMouseTracking( true )", aber es klappt weder für this noch für this->viewport(). Was bleibt denn da noch übrig?

Schöne Grüße,

anda_skoa
08-10-2005, 22:01
viewportMouseMoveEvent

Ciao,
_

Kirsche
09-10-2005, 15:41
Hallo anda_skoa,

vielen Dank! Es klappt jetzt. Ich musste zwar "this->viewport()->setMouseTracking( true )" UND "label->setMouseTracking( true )" verwenden, aber nun klappt es.

Woher wusstest du, dass es "viewportMouseMoveEvent" überhaupt gibt? Es stand nicht in der Klassenbeschreibung von QScrollview ( oder einer übergeordneten Klasse ). Es steht nur im Header (da habe ich es nämlich dann gefunden). Schon seltsam, dass es nicht direkt in "QScrollView Class Reference" steht.

Also tausend Dank, ohne dich hätte ich das nicht gefunden! :)

Schöne Grüße,

anda_skoa
09-10-2005, 15:58
Hab das in einer ScrollView Subklasse die ich in einem Programm in der Firma verwende ;)

Ciao,
_