QGraphicsItem deselezionare ridisegnare problema
-
22-09-2019 - |
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.
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.