我想在QML中将我的C ++类显示为ListView
。我有一个空的向量,稍后会被填充:
QList<QObject*> _myList;
并设置上下文
QQmlContext *ctxt = _eng->rootContext();
ctxt->setContextProperty("modelName",QVariant::fromValue(_myList));
在qml文件中我有
ListView {
id: listView
model: modelName
delegate: myDelegate {}
}
但是在启动应用程序时,我收到以下错误
qrc:/screen2.qml:252: ReferenceError: modelName is not defined
我做错了什么?扼杀,错误并不会阻止列表在填充后正确显示。
答案 0 :(得分:2)
在加载QML文件之前调用setContextProperty
。
当您加载QML文件时,引擎会评估其绑定,因为您尚未设置modelName
的上下文属性,它会输出警告。
之后进行设置时,会重新评估此绑定,这就是为什么列表最终会在您的情况下正确显示。