Frage

Sehr einfache Qt-GUI-Anwendung:

  • Auf der Bühne habe ich mehrere Kreise als QGraphicsItem implementiert
  • liefert boundingRect Quadrat um dieser Kreis.
  • Die Methode 'Form' nicht außer Kraft gesetzt.

Das Problem erscheint, wenn in paint () Methode, die ich habe hinzugefügt:

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

Die Auswahl ist gut gezeichnet, aber Aufheben der Auswahl nicht Ursache Zu. Auf Protokollebene kann ich das Element wirklich verloren Auswahl Flagge sehen. Der Aufruf update () von itemChange ist auch nutzlos. Vielen Dank im Voraus für jede Anregung.

War es hilfreich?

Lösung

Nach 10 Tagen kehrte ich zurück zu diesem Problem und entdecken, dass mein QGraphicsItem konstruiert mit setCacheMode(DeviceCoordinateCache);  OH MEIN GOTT! Dumme Fehler, wenn diese Zeile entfernt wurde (standardmäßig QGraphicsItem :: NoCache verwendet) Auswahl neu gezeichnet gut ist.

Andere Tipps

Sie können auch versuchen, den Standard QGraphicsView :: MinimalViewportUpdate zu FullViewportUpdate mit setViewportUpdateMode zu ändern (QGraphicsView :: FullViewportUpdate);

Sie können auch Szene aufrufen () -> update (); aus dem Artikel ein Neuzeichnen planen.

Einer von ihnen zumindest erforderlich war, wenn ich Wechsel hielt die QGraphicsItem :: ItemHasNoContents Flagge auf ein Element.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top