QML:如何从 C++ 中读取 QList
Posted
技术标签:
【中文标题】QML:如何从 C++ 中读取 QList【英文标题】:QML : How to read a QList from C++ 【发布时间】:2011-06-22 10:08:28 【问题描述】:我有一个简单的需求:我定义了一个 C++ 类
class MyClass: public QDeclarativeItem
Q_OBJECT
public:
MyClass(QDeclarativeItem * parent=0);
...
private:
QList<QString> mList
当然,我已经注册了它:qmlRegisterType<MyClass>(...)
我想在 QML 代码中访问我的QList<QString> mList
。我该怎么做?
这让我很恼火,因为它看起来像一个简单的问题,但我找不到任何关于此的信息。 (我可以创建一个 Q_INVOKABLE 插槽,但我无法读取结果等...)
编辑:QML supported Data Types
【问题讨论】:
【参考方案1】:我不认为 QList
是 Qt 的 QML 绑定支持的数据类型。我在使用 QtWebkit 桥接 C++ 和 javascript 时遇到了类似的问题。
如果可能,请尝试使用QVariantList
而不是QList
。虽然这在技术上是 QList<QVariant>
的 typedef,但我认为它应该可以工作。
【讨论】:
据此:qt-project.org/doc/qt-5/qtqml-cppintegration-data.htmlQList C++ sequence types are supported transparently in QML as JavaScript Array types
【参考方案2】:
如果您在列表中需要自定义类型(不仅仅是字符串或其他基本类型),则可以使用 QDeclarativeListProperty。
不过比较复杂,见http://doc.qt.nokia.com/4.7/declarative-tutorials-extending-chapter5-listproperties.html
【讨论】:
以上是关于QML:如何从 C++ 中读取 QList的主要内容,如果未能解决你的问题,请参考以下文章