QGraphicsItem redessiner problème désélectionner
-
22-09-2019 - |
Question
Très application simple GUI Qt:
- Sur la scène que j'ai plusieurs cercles mis en œuvre comme QGraphicsItem
- boundingRect retourne carré autour ce cercle.
- La méthode 'forme' n'a pas été remplacée.
Le problème apparaît lorsque la méthode de peinture () J'ai ajouté:
if (isSelected()) {
painter->drawRect(re);
}
La sélection est bien dessiné, mais désélection ne provoque pas de redessiner. Au niveau du journal, je peux voir cet élément indicateur de sélection vraiment perdu. L'appel mise à jour () à partir itemChange est inutile aussi. Je vous remercie d'avance pour toute suggestion.
La solution
Au bout de 10 jours, je retourné à ce problème et a découvert que mon QGraphicsItem construit avec
setCacheMode(DeviceCoordinateCache);
OMG! erreur stupide, lorsque cette ligne a été supprimée (par défaut QGraphicsItem :: NoCache utilisé) la sélection est redessinée bien.
Autres conseils
Vous pouvez aussi changer le QGraphicsView par défaut :: MinimalViewportUpdate à FullViewportUpdate avec setViewportUpdateMode (QGraphicsView :: FullViewportUpdate);
Vous pouvez appeler la scène () -> mise à jour (); de l'élément pour planifier une repeindre.
L'un d'eux était nécessaire au moins quand je continuais de changer le drapeau QGraphicsItem :: ItemHasNoContents sur un élément.