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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top