0
我有一个QObject,它包装其他纯对象:如何通知QML项目其属性已更改?
#include "qmlnote.h"
QString QmlNote::title() const {
return note_.title();
}
void QmlNote::reload(const Note ¬e) {
note_ = note;
}
,我用这个QML中加载:
ctxt->setContextProperty("note", &qmlNote);
,后来我让换一个不同的音符:
qmlNote.reload(newNote);
然后在QML,我想要做的事时,这个变化为:
import QtQuick 2.0
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.1
Item {
property QtObject note
onNoteChanged: {
console.info(note.title)
}
}
我希望onModelChanged()
只要我打电话reload()
就会触发,但不会发生。我想我需要从某处发出一些信号来通知QML视图该注释已经改变,但不知道在哪里。我以为我可以从reload()
发出信号,但似乎QObject
没有内置的changed
信号。
有关如何处理这个问题的任何建议?
完美,非常感谢 –
此外,如果你做“标题”一个对你'QmlNote'类属性,你可以在任何属性绑定使用'note.title',它会得到重新读取时你发出该属性的更改信号 –
我会建议,但示例代码不会在绑定中使用它。实施适当的财产是大多数情况下的一个好主意。 – dtech