J'ai un QObject qui enveloppe un autre objet simple:Comment notifier un élément QML que sa propriété a changé?
#include "qmlnote.h"
QString QmlNote::title() const {
return note_.title();
}
void QmlNote::reload(const Note ¬e) {
note_ = note;
}
que je charge en QML en utilisant ceci:
ctxt->setContextProperty("note", &qmlNote);
et plus tard je fais envelopper une note différente:
qmlNote.reload(newNote);
Puis, en QML, je veux faire quelque chose quand ce changement de note:
import QtQuick 2.0
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.1
Item {
property QtObject note
onNoteChanged: {
console.info(note.title)
}
}
Je voudrais onModelChanged()
être déclenché chaque fois que j'appelle reload()
mais ce n'est pas le cas. Je suppose que je devrais émettre des signaux de quelque part pour informer la vue QML que la note a changé, mais je ne sais pas où. Je pensais que je pouvais émettre un signal de reload()
mais il semble que QObject
n'a pas de signal changed
intégré.
Une suggestion sur la façon de gérer cela?
parfait, merci beaucoup –
En outre, si vous faites « titre » une propriété sur votre classe 'QmlNote', vous pouvez simplement utiliser' note.title' dans une propriété de liaison et il va se relus lorsque vous avez émis le signal de changement de cette propriété –
Je l'aurais suggéré, mais l'exemple de code ne l'utilise pas dans une liaison. La mise en œuvre d'une propriété appropriée est une bonne idée dans la plupart des cas. – dtech