2016-10-13 6 views
0

Ich habe in der Dokumentation hoch und niedrig gesucht, aber nichts dazu gefunden. Gibt es trotzdem, dass ein QML-Element, das ich erstellt habe, benachrichtigt werden kann, wenn eines seiner Kinder aufgrund von Änderungen neu gezeichnet werden muss. Wird das Objekt ein Signal oder ein Ereignis senden, mit dem sich der Elternteil verbinden/anhören kann? Vorzugsweise würde es ausgegeben werden, wenn das Objekt als "schmutzig" markiert ist und erneut gerendert werden sollte, aber ein Signal wie onPropertyChange würde auch funktionieren.Werden Sie benachrichtigt, wenn QQuickItem aktualisiert werden muss

Beispiel

MyQmlItem { 
    Rectangle { 
      width: 50; height: 60 
      color: "blue" 
      Text { 
       text: "hello world" 
      } 
    } 
} 

Wenn einige Code z ändert sich die Farbe des Rectangle ich die MyQmlItem möchte über diese Änderung informiert werden.

+0

Können Sie das näher erläutern zu * warum * würden Sie so etwas brauchen? – peppe

+0

Ich rendere diese Elemente in ein QOpenGLFramebufferObject, das ich dann als ein Bild ergreife und schreibe auf Offscreen-Gerät. Ich möchte dieses Schreiben vermeiden, wenn nichts aktualisiert wird – Johan

+0

Das Schreiben wird jeden anderen Qt-Renderrahmen passieren, unabhängig davon, ob der FBO neu zeichnen muss – Johan

Antwort

0

FWIIW ich habe es geschafft, eine akzeptable Lösung zu finden. Ich habe der MyQmlItem-Klasse eine boolesche Eigenschaft "isDirty" hinzugefügt, die ein Signal ausgibt, wenn sie auf "true" gesetzt ist. Dann muss jedes Kind diese Option, wenn es macht Änderungen festlegen, die neu gezeichnet werden muss, wird die QML oben dann

MyQmlItem { 
    id: "topItem" 
    Rectangle { 
     width: 50; height: 60 
     color: "blue" 
     Text { 
      text: "hello world" 
      onTextChange: { 
       topItem.isDirty = true; 
      } 
     } 
} 

nicht perfekt, aber gut genug

Verwandte Themen