c++ - QML ListView 和 c++ : ReferenceError Model not defined

标签 c++ qt listview qml

我想在 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/

相关文章:

c++ - 如何在错误消息 'distinct'可能的符号中获得增强精神?

C++ 11 线程,错误调用纯虚函数

qt - QNetworkAccessManager 文件上传错误

java - 从 ListView 适配器中删除重复项

android - notifyDataSetChanged() 在带有复选框列表的 BaseAdapter 中不起作用

c++ - 自动将 JSON 数据迁移到最新版本的 JSON 模式

c++ - OpenCV (C++) : how to save a 16bit image?

c++ - 如何在 Qt 5 中写入和读取 QResource 文件?

java - 拆分字符串以仅获取数字数组(转义空白和空格)

java - 从 ListView 获取子项会导致 android.view.View android.view.View.findViewById(int) 出现空对象引用