Экспонировать operator []
Как при экспонировании объекта из c++ в js предоставить доступ к члену operator [] ?
Т.е. хочется, чтобы объект выглядел в js как массив.
Для встраивания JS использую движок QJSEngine.
Пытаюсь:
struct TablePrototype
{
Q_GADGET
Q_PROPERTY(int rows READ getRowCount) // ok
Q_PROPERTY(int columns READ getColumnCount)
int getRowCount() const;
int getColumnCount() const;
Q_INVOKABLE QVariant operator [] ( int index ) const; // не работает.
}
Ошибок компиляции не получаю, но в run-time: TypeError: Cannot read property '0' of undefined. Т.е. Нужет метод с каким-то специальным именем?
Ответы (1 шт):
Автор решения: magrif
→ Ссылка
Кажется QQmlListProperty то что вам нужно. Тут Extending QML - Object and List Property Types Example пример регистрации такой проперти-списка с соответствующими функциями добавления, обращения по индексу, удаления и прочих.