2

我有一个简单的需求:我定义了一个 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 支持的数据类型

4

2 回答 2

4

我不认为这QList是 Qt 的 QML 绑定支持的数据类型。我在使用 QtWebkit Bridge 连接 C++ 和 JavaScript 时遇到了类似的问题。

如果可能,请尝试使用 aQVariantList而不是 a QList。虽然这在技术上是一个 typedef,QList<QVariant>但我认为它应该可以工作。

于 2011-06-22T13:33:24.727 回答
2

如果您需要列表中的自定义类型(不仅仅是字符串或其他基本类型),则可以使用 QDeclarativeListProperty。

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

于 2011-06-22T23:36:44.240 回答