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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top