QML: Как читать QList из C++

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

Решение

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

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

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

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

Другие вопросы по тегам