我看到列表,它有适量的行(根据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
}
}
非常感谢您的帮助!
答案 0 :(得分:3)
您需要为ListView
设置文字。在你的情况下:
ListView {
id:devicesList
objectName:"devicesList"
width: 100; height: 100
model: myModel
delegate: Rectangle {
height: 50
width: 100
Text { text: modelData }
}
}
模型可以是一个简单的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();
}