c++ - 从 QML 访问 C++ QLists

标签 c++ qml qt5 qlist qtquick2

如果我有 C++ 中的内容列表,如何将其公开给 QML(在 Qt5/QtQuick 2 中)?似乎 QML 只能理解 QObject 派生类,这是一个问题,因为 QObject 不能放入 QList 或复制.我该怎么做:

struct Thing
{
    int size;
    QString name;
};

class ThingManager : public QObject
{
    Q_OBJECT

    // These macros support QtQuick, in case we one day want to use it to make a slick
    // interface (when QML desktop components are released).
    Q_PROPERTY(QList<Thing> things READ things NOTIFY thingssChanged)

public:
    // ...
    QList<Thing> things() const;

    // ...

};

这样我就可以在 QML 中做这样的事情:?

var a = thingManager.things[0].name;

最佳答案

或者,您可以使用 QVariantList ( QList<QVariant> ),传递给 QML 时会自动变为 JavaScript 数组,并且可以从 C++ 和 QML 读写

关于c++ - 从 QML 访问 C++ QLists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14287252/

相关文章:

c++ - 为什么常量缓冲区在 Directx 11 中部分更新

java - Android:如何将自定义对象的 ArrayList 传递给 C++ 代码,并使用 JNI 在 Java 代码中获取这些对象的操作 ArrayList

c++ - BOOST::thread 删除可连接线程有什么问题?

c++ - QML多媒体播放文件夹中的所有mp3

c++ - QML 图像不加载图像源中具有非 ASCII 字符的图像

qt - 在 OS X 上使用 LocalStorage (Sqlite) 部署 Qt/QML App

c++ - 告诉 QMake -std=C++17。 QMAKE_CXXFLAGS 被覆盖

c++ - Qt/C++ : drawing efficiently

c++ - QTableView 如何设置特殊行的背景色?

qml - 如何用鼠标选择文本编辑区域