使用QList <qvariantmap>作为QML ListView </qvariantmap>的模型

时间:2013-06-10 05:29:00

标签: c++ qml qt5

我无法弄清楚如何使用QList作为模型。有几个例子,数据类型是一维的,但没有看到像这样嵌套的东西。 相关代码如下:

main.cpp - 这里我注册了QList

viewer.rootContext()->setContextProperty("productlist", QVariant::fromValue(databaseController.listProjects()) );

main.qml - 这里我想使用模型'productlist'

ListView {
    id: list_view

    anchors.fill: parent
    model: productlist
    delegate:
        Rectangle{
           height: 20
           width: 200
           color: "#CCCCCC"
           Text { text:  modelData.name }
        }
}

注意,如果我使用 databaseController.listProjects()[0] ,我当然可以获得第一个QVariantMap并且该示例有效,但我不确定如何迭代值和/或密钥。

我正在使用QtQuick 2.0和Qt 5

我已经阅读了有关QAbstractListModel的内容,但无法弄清楚如何使用它..我是在正确的轨道上还是有更简单的方法?

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

您可以轻松地使用QVariantList作为ListView的模型,但您需要知道它将是只读的,因为QVariantList / QVariantMap的value()是const:

QVariantList myModel;
foreach (QVariantMap item, databaseController.listProjects()) {
    myModel.append (item);
}

viewer.rootContext()->setContextProperty("productlist", QVariant::fromValue(myModel));

已经完成了!