QML中的ListView - 空行

时间:2015-10-09 11:25:32

标签: c++ qt listview qml

我看到列表,它有适量的行(根据QStringList中的元素数量),但行是空的。

我做错了什么?

在c ++中我的代码是:

QStringList s;
s.append("1");
s.append("2");
s.append("2");
s.append("2");
s.append("2");
s.append("2");


QObject * pList = pQmlObject->findChild<QObject*>("devicesList");
pList->setProperty("model",s);

在QML中我做:

 ListView {
            id:devicesList
            objectName:"devicesList"
            width: 100; height: 100
            model: myModel
            delegate: Rectangle {
                height: 50

                width: 100

            }
        }

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您需要为ListView设置文字。在你的情况下:

ListView {
            id:devicesList
            objectName:"devicesList"
            width: 100; height: 100
            model: myModel
            delegate: Rectangle {
                height: 50
                width: 100
                Text { text: modelData }
            }
        }

根据documentation

  

模型可以是一个简单的QStringList,它提供的内容   列表通过modelData角色。

编辑#1:

当我使用您的C ++代码时,我收到警告ReferenceError: myModel is not defined

也许这是我的错,因为我没有完整的代码,但无论如何,你有不同的方式与QML对象进行交互:

#include <QGuiApplication>
#include <QStringList>

#include <qqmlengine.h>
#include <qqmlcontext.h>
#include <qqml.h>
#include <QtQuick/qquickitem.h>
#include <QtQuick/qquickview.h>

int main(int argc, char ** argv)
{
    QGuiApplication app(argc, argv);

    QStringList s;
    s.append("1");
    s.append("2");
    s.append("2");
    s.append("2");
    s.append("2");
    s.append("3");

    QQuickView view;

    QQmlContext *ctxt = view.rootContext();
    ctxt->setContextProperty("myModel", QVariant::fromValue(s));

    view.setSource(QUrl("qrc:view.qml"));
    view.show();

    return app.exec();
}