QGRAPHICSIDEM DESELECT REDRAW PROBLEMA
-
22-09-2019 - |
Pergunta
Aplicativo QT GUI muito simples:
- Na cena, tenho vários círculos implementados como qgraphicsItem
- BoundingRect retorna quadrado em torno deste círculo.
- Método 'forma' não é substituído.
O problema aparece quando no método Paint () adicionei:
if (isSelected()) {
painter->drawRect(re);
}
A seleção é bem desenhada, mas a insegurança não causa redefinição. No nível do log, posso ver que o item realmente perdeu o sinalizador de seleção. Chamando a atualização () do itemChange também é inútil. Agradeço antecipadamente por qualquer sugestão.
Solução
Depois de 10 dias, voltei a esse problema e descobri que meu qgraphicsItem construído comsetCacheMode(DeviceCoordinateCache);
OH MEU DEUS! Erro estúpido, quando essa linha foi removida (por padrão qgraphicsItem :: nocache usada) a seleção é bem redefinida.
Outras dicas
Você também pode tentar alterar o qgraphicsView padrão :: minimalViewPortUpDate para FullViewPortUpDate com setViewPortUpDatemode (QGraphicsView :: FullViewPortUpDate);
Ou você pode ligar para a cena ()-> update (); Do item para agendar uma repintura.
Um deles era necessário pelo menos quando eu continuava alterando o sinalizador QGraphicSItem :: ItemHasnocentents em um item.