绑定到 QListView
Binding to QListView
我正在尝试列出从 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
未定义。
这是因为您在设置上下文属性之前调用了load()
,所以pLst
目前还不存在ListView
正在建设中。
您应该在设置用于 QML 对象初始化的上下文属性后load()
调用。
我正在尝试列出从 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
未定义。
这是因为您在设置上下文属性之前调用了load()
,所以pLst
目前还不存在ListView
正在建设中。
您应该在设置用于 QML 对象初始化的上下文属性后load()
调用。