我想在 QML 中将我的 C++ 类显示为 ListView
。我有一个空 vector ,稍后将被填充:
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
我做错了什么?奇怪的是,错误并没有阻止列表在填充后正确显示。
最佳答案
在加载您的 QML 文件之前调用 setContextProperty
。
当您加载 QML 文件时,引擎会评估其绑定(bind),因为您尚未为 modelName
设置上下文属性,它会输出警告。
当您之后设置它时,将重新评估此绑定(bind),这就是列表最终正确显示在您的案例中的原因。
关于c++ - QML ListView 和 c++ : ReferenceError Model not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46318772/