[英]Access QList<T> from qml
我想从qml访问QList。 这是示例代码
class A;
class B : public QObject {
...
Q_INVOKABLE QQmlListProperty<A> read();
...
private:
QList<A*> lst;
}
我正在使用context属性访问qml中的B类对象。 如何访问qml中的列表。 任何示例代码都会有所帮助。
您将需要Q_DECLARE_METATYPE(A *)
才能将其包装在QVariant
以用于QML。
但这只是为了引用和传递QML。
如果要像在C ++中一样在QML中使用A
,它将必须继承QObject
并实现属性,插槽等。
您可以在此处查看如何实现QQmlListProperty
: http : QQmlListProperty
另外,如果QObject
对您来说太沉重而又不实用,那么您始终可以使用派生的单个QObject
作为非QObject
的控制器,但仍注册为元类型类型。
class A {
public:
int a;
};
Q_DECLARE_METATYPE(A *)
class AProxy : public QObject {
Q_OBJECT
public slots:
int a(QVariant aVar) {
return aVar.value<A *>()->a;
}
void setA(QVariant aVar, int v) {
aVar.value<A *>()->a = v;
}
};
这样,您就没有列表中每个对象的QObject
的大小开销和限制,并且可以使用单个控制器访问数据,尽管性能较低。 在您的情况下,您可以使用B
充当A
容器和控制器代理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.