Ho un QScrollArea che genera il mio fantastico widget di scorrimento. Mi piace fare aggiornamenti sui contenuti in varie occasioni.update() o repaint() non riesce ad attivare paintEvent()
Per questo ho eseguito l'override di paintEvent(QPaintEvent *)
. Quindi ogni volta che voglio che sia fatto, chiamo il numero update()
sul widget.
Problema:paintEvent()
non viene mai chiamato da questo!
Quello che ho cercato nella risoluzione dei problemi finora:
- Uso
repaint()
invece diupdate()
. Dovrebbe chiamarlo in modo istantaneo. Purtroppo no. - Test per
isVisible()
eupdatesEnabled
- Verificare che il mio override sia corretto. Ridimensionare la finestra delle chiamate la mia funzione. Solo le mie chiamate di aggiornamento manuale(), repaint() hanno esito negativo.
- Implementare un QTimer per attivare update() o repaint() ogni 500 ms. Il trigger fornisce l'output del testo, la funzione non viene chiamata.
Qualcuno ha un'idea di cosa controllare dopo? Cosa potrebbe rendere il repaint() non call paintEvent()?
Non disegnare su QScrollArea, ma invece la QLabel assegnata ha risolto il problema per me. Ottengo i update() s per QLabel. – ypnos
potresti incollare la tua intestazione/definizione di classe? Avete tutti i vostri macro Q_OBJECT in là? Dare anche un breve snippet su come si sta ignorando paintEvent() ... – bgs