Dipingere senza cancellare lo sfondo
-
10-07-2019 - |
Domanda
Sto usando un QPainter per ottenere alcuni elementi grafici su una finestra. Sfortunatamente ogni volta che viene chiamata la funzione paintEvent ()
, l'intera finestra viene cancellata. Come posso disegnare senza cancellare? Cioè come posso lasciare intatte le cose del precedente evento paint?
Sto usando Qt4
Soluzione
Devi impostare backgroundMode
utilizzando il setBackgroundMode
. L'enum Qt :: NoBackground
è ciò che stai cercando.
Altri suggerimenti
Poiché entrambe le risposte sono solo per Qt3, ecco la soluzione per Qt4. Devi chiamare
setAttribute(Qt::WA_OpaquePaintEvent);
(ad esempio nel costruttore) seguendo la documentazione qui .
In Qt3, imposta il flag Qt :: WNoAutoErase
dal WidgetFlags enum per evitare che la finestra venga cancellata su ogni evento di disegno.
Puoi impostare questo flag passandolo al costruttore QWidget .