Hi
тут пара вопросов про С++ + QML, на которые не могу найти ответ.
1: Как правильно протягивать константы из C++ кода? В rootContext как-то не очень охота их ставить. Как это идеологически правильно в QML делается? Например у меня есть интерфейс для работы с неким девайсом, я регаю класс для работы с ним для QML
C++ (Qt)
qmlRegisterType<MyCoolDevice>( ... )
и вот для некоторых его методов ( которые Q_INVOKABLE ) нужны некие константы. Правильно ли эти константы (в C++ описаны как enum) сделать ему read-only свойствами? Есть ли способ зарегать прямо енум, чтоб при его дополнении/изменении не пришлось переписывать свойства класса?
2: Есть ли способ обработки исключений, брошенных в C++ коде, прям в QML?
Структура
Javascript
try { } catch( exception ) { }
в JS не работает. Приложение просто валится с криком в лог. Если нет такой возможности, то есть ли единая точка входа исполнения всех вызовов из QML, которую я могу обработать из C++. Просто оборачивать каждый вызов как-то это костыльно сильно.
3: У меня есть интерфейс некоего итератора. Можно ли на его основе только из QML/JS строить модель для листа/дерева, например. Примеры почему-то всегда указывают на необходимость постройки модели в C++, и потом уже ее использовать в QML. Выглядит он как-то так
C++ (Qt)
struct iterator_iface {
virtual ~iterator_iface( ) { }
virtual void next( ) = 0;
virtual bool end( ) const = 0;
virtual iterator_iface *clone( ) const = 0;
virtual iterator_value &get( ) = 0;
virtual const iterator_value &get( ) const = 0;
};
Спасибо =)