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