【问题标题】:ListView in QML - empty rowsQML 中的 ListView - 空行
【发布时间】:2015-10-09 11:25:32
【问题描述】:

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

            }
        }

非常感谢您的帮助!

【问题讨论】:

  • AFAIK 委托必须是 ItemComponent
  • @danielfranca RectangleItem

标签: c++ qt listview qml


【解决方案1】:

您需要为该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();
}

【讨论】:

  • 是的,您需要model 属性,但是您有不同的方法来更新ListView. 我的代码避免了警告,但您肯定会找到自己的解决方案。编码愉快!
猜你喜欢
  • 1970-01-01
  • 2012-06-02
  • 2014-02-03
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
相关资源
最近更新 更多