绑定到QListView

时间:2015-07-27 22:27:46

标签: qt qml qt5 qtquick2 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未定义。

1 个答案:

答案 0 :(得分:2)

这是因为您在之前调用了load() 设置了上下文属性,因此pLst正在构建时ListView尚不存在。

在设置用于初始化QML对象的上下文属性后,您应该在之后调用load()