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() ,因此在ListView构建时pLst还不存在。

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

相关内容

  • 没有找到相关文章

最新更新