Domanda

Molto semplice applicazione GUI Qt:

  • Nella scena che ho più cerchi implementato come QGraphicsItem
  • boundingRect ritorna quadrato intorno questo cerchio.
  • Metodo 'forma' non viene sostituita.

Il problema si presenta quando nel metodo paint () Ho aggiunto:

if (isSelected()) {
    painter->drawRect(re);
}

La selezione è disegnato bene, ma deselezione non causa ridisegnare. A livello di log vedo che punto davvero perso la bandiera di selezione. Chiamare update () da itemChange è anche inutile. Grazie in anticipo per qualsiasi suggerimento.

È stato utile?

Soluzione

Dopo 10 giorni sono tornato di nuovo a questo problema e ha scoperto che il mio QGraphicsItem costruita con setCacheMode(DeviceCoordinateCache);  OH MIO DIO! errore stupido, quando questa linea è stato rimosso (per impostazione predefinita QGraphicsItem :: NoCache utilizzato) la selezione viene ridisegnato bene.

Altri suggerimenti

Si può anche provare a cambiare il QGraphicsView predefinito :: MinimalViewportUpdate a FullViewportUpdate con setViewportUpdateMode (QGraphicsView :: FullViewportUpdate);

In alternativa, è possibile chiamare scena () -> update (); dalla voce per pianificare un ridisegno.

Uno di loro è stato richiesto almeno quando ho continuato a cambiare la bandiera QGraphicsItem :: ItemHasNoContents su un elemento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top