绑定到 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()调用