QML:如何从C ++中读取QList

时间:2011-06-22 10:08:29

标签: qt signals-slots qml

我有一个简单的需求:我已经定义了一个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

2 个答案:

答案 0 :(得分:4)

我不认为QList是Qt的QML绑定支持的数据类型。我使用QtWebkit Bridge在C ++和JavaScript之间进行了类似的问题。

如果可能,请尝试使用QVariantList代替QList。虽然这在技术上是QList<QVariant>的typedef,但我认为它应该有用。

答案 1 :(得分:2)

如果您需要列表中的自定义类型(不仅仅是字符串或其他基本类型),那么就有QDeclarativeListProperty。

但它更复杂,请参阅http://doc.qt.nokia.com/4.7/declarative-tutorials-extending-chapter5-listproperties.html