gpt4 book ai didi

c++ - QML 中的 ListView - 空行

转载 作者:行者123 更新时间:2023-11-30 02:36:15 28 4
gpt4 key购买 nike

我看到列表,它有适量的行(根据 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

}
}

非常感谢您的帮助!

最佳答案

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

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

根据documentation ,

A model may be a simple QStringList, which provides the contents of the list via the modelData role.

编辑#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();
}

关于c++ - QML 中的 ListView - 空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33037083/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com