Du hast noch immer nicht verstanden, was dir upsala und franzf vermitteln wollten:marvel hat geschrieben: Dennoch wird bei einem Klick auf den Button gleich zweimal die paintevent Methode aufgerufen. Dies möchte ich irgendwie unterbinden. Gibt es eine Möglichkeit dieses Verhalten zu ändern oder kennt jmd eine Alternative ?
Das paintEvent eines (Child-)Widgets wird grundsätzlich vom System ausgelöst "wenn es notwendig ist", also so in etwa:
* Wenn die Fenster-Geometry verändert wird (Resize, Move usw.)
* Beim Ändern von Min/Max des Fensters
* Wenn sich ein gewisser Prozentsatz des Fensters ändert, so dass sich ein kompletter "Redraw" des Fensters lohnt (das ist vermutlich bei dir mit dem Button der Fall)
* Wenn die Daten des Widgets selbst ändern (dann muss das Widget sich selbst um das Event bemühen (mit "update()")
Daher muss ein paintEvent-Code mehr oder weniger unabhängig von der Anzahl Aufrufe sein! Denn: auch wenn du z.B. 25x pro Sekunde ein update() auslöst, kann es trotzdem weitere Events geben (wenn der User am Fenster rüttelt..)
Bei zeitabhängigen oder sehr aufwendigen Operationen, muss daher die Bereitstellung der Bilddaten und das Zeichnen getrennt werden. Helfen kann daher -wie erwähnt- ein Buffer dazwischen, so dass der Bildbuffer dann ändert wenn er muss (z.B. wenn bei gezoomt wird), aber das beim Zeichnen vollkommen egal ist...
hth..