[Qt] repaint() bzw. update() wirkungslos



  • Hallo.
    Ich habe in QAbstractScrollArea (weiß nicht ob das wichtig ist) die paintEvent Methode überschrieben, um was darin mit QPainter zu zeichnen. Das funktioniert auch, doch wo immer ich im Code den paintEvent - Handler aufrufen will (z.B. über repaint()) passiert nichts. Erst z.B. beim änderen der Fenstergrösse oder minimieren->wiederherstellen zeichnet er wieder.
    Also: wie kann ich das zeichnen erzwingen? Muss ich das Widget irgendwie als "damaged" markieren oder so?

    Gruß



  • Hi,
    wieso benutzt du ne QAbstractScrollArea und nicht eine normale QScrollArea?

    Und was zeichnest du auf die ScrollArea? wäre es nicht schlauer, das auf ein Widget in der ScrollArea zu zeichnen?
    Ich weiß nicht, wie eine ScrollArea soetwas handelt.

    Normalerweise sollte das Widget geupdated werden, sobald du repaint() aufrufst. Bei update() ist das was anderes.

    mfg
    Matogel



  • matogel schrieb:

    Hi,
    wieso benutzt du ne QAbstractScrollArea und nicht eine normale QScrollArea?

    naja, ich brauch die zusätzlichen Funktionen die QScrollArea bietet nicht.

    Habe die Lösung gefunden: Das repaint() muss man für das viewport-widget aufrufen, also: viewport()->repaint()

    Gruß


Anmelden zum Antworten