J'ai une QScrollArea qui crée mon widget de défilement génial. J'aime faire des mises à jour sur le contenu à diverses occasions.update() ou repaint() ne déclenche pas paintEvent()
Pour cela, j'ai fait un remplacement de paintEvent(QPaintEvent *)
. Ensuite, chaque fois que je veux que ce soit fait, j'appelle update()
sur le widget.
Problème:paintEvent()
n'est jamais appelé par cela!
Ce que j'ai essayé dans le dépannage à ce jour:
- Utilisation
repaint()
au lieu deupdate()
. Devrait l'appeler instantanément. Malheureusement, non. - Test pour
isVisible()
etupdatesEnabled
- Testez si mon remplacement est correct. Redimensionner la fenêtre appelle ma fonction. Seuls mes appels de mise à jour manuelle(), repaint() échouent.
- Implémentez un QTimer pour déclencher update() ou repaint() toutes les 500ms. Le déclencheur donne la sortie de texte, la fonction n'est pas appelée.
Quelqu'un a-t-il une idée de ce qu'il faut vérifier ensuite? Que pourrait faire repeindre() pas appel paintEvent()?
Ne pas dessiner sur le QScrollArea, mais à la place de son assigné QLabel a résolu le problème pour moi. Je reçois les mises à jour() pour le QLabel. – ypnos
pourriez-vous coller dans votre définition d'en-tête/classe? Avez-vous toutes vos macros Q_OBJECT dedans? donnez également un extrait rapide de la façon dont vous remplacez votre paintEvent() ... – bgs