QML: Как читать QList из C ++ - PullRequest
2 голосов
/ 22 июня 2011

У меня есть простая потребность: я определил класс 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 типы данных

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

Я не думаю, что QList - это поддерживаемый тип данных для привязки Qt QML.У меня были похожие проблемы при взаимодействии C ++ и JavaScript с использованием моста QtWebkit.

Если возможно, попробуйте использовать QVariantList вместо QList.Хотя технически это typedef для QList<QVariant> Я думаю, что это должно работать.

2 голосов
/ 23 июня 2011

Если вам нужен пользовательский тип в вашем списке (не только строки или другие базовые типы), для этого случая есть QDeclarativeListProperty.

Но это более сложно, см. http://doc.qt.nokia.com/4.7/declarative-tutorials-extending-chapter5-listproperties.html

...