我试图列出从一个QStringList到QML的条目,但是我一直得到绑定的一个未定义的错误。
以下是C++代码:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QStringList lst;
QString m("item 1");
lst.append(m);
QQmlComponent comp(&engine);
QQmlContext *ctx = engine.rootContext();
ctx->setContextProperty("pLst", QVariant::fromValue(lst));
return app.exec();
}以下是QML代码:
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
ApplicationWindow {
id: root; objectName: "root"
title: qsTr("Doesn't Matter")
width: 640
height: 480
visible: true
ListView{
id: lst
model: pLst
}
}错误显示没有定义pLst。
发布于 2015-07-27 22:47:04
这是因为在设置context属性之前调用load() ,因此pLst在ListView正在构建的时候还不存在。
在设置用于初始化QML对象的上下文属性之后,应该调用load() 。
https://stackoverflow.com/questions/31664394
复制相似问题