Seite 1 von 1

QT4.2.3: QScrollArea Problem

Verfasst: 19. April 2007 15:02
von nando
Hi,
ich habe ein eigenes Widget MyWidget, das von QWidget abgeleitet ist und die paintEvent Methode überschreibt und irgendwas zeichnet.....

Nun möchte ich, falls der Inhalt, der in MyWidget gezeichent wird breiter ist als das Widget, dass Scrollbars kommen.
Dazu habe ich an der Stelle, wo MyWidget erzeugt wird ein Objekt von QScrollArea erzeugt und mit setWidget einen Pointer auf MyWidget übergeben.

Leider sehe ich keine Scrollbars. Wie kann ich denn in der paintEvent Methode triggern, dass die Zeichung über den Rand hinausgeht und QScrollArea die Scrollbars gezeichnet werden ???


Gruss,
Nando

Verfasst: 20. April 2007 10:58
von andy72
Eigentlich kannst Du ja nur dort zeichnen, wo auch eine Fläche ist - sprich, in dem Augenblick, wo Du Dein MyWidget vergrösserst, sollten dann auch Scrollbars kommen.

QAbstractScrollArea besitzt die Methoden viewport() und setViewport(QWidget *) - damit sollte sich doch auch was anstellen lassen, oder ?

LG
Andy

Verfasst: 20. April 2007 12:25
von nando
hi...
ne also ich kann auch drueber hinauszeichnen... das sieht man dann natuerlich erst, wenn man das fenster vergroessert.....
d.h, wenn ich mein fenster kleiner mach als das gezeichnete bild kommen keine scrollbars und ich sehe halt nicht mehr alles.....

gruss,
nando

Verfasst: 20. April 2007 12:29
von andy72
Was passiert denn, wenn Du im QPainter-Constructor nicht "this" angibst, sondern "viewport()" ? dann zeichnest Du nicht auf deinem Widget, sondern direct im viewport - das ja auch ein QWidget ist. Bleibt nur die Frage, ob das viewport-Widget auch merkt, dass sich vergrössert hat.

Notfalls kannst Du auch versuchen, mit einem resize() den viewport zu vergrössern, damit was scrollt

Verfasst: 23. April 2007 08:19
von nando
ja danke...
mit dem resize funktioniert es auf einamal....
danke fuer den tip!

gruss,
nando