Russian Qt Forum
Июня 19, 2025, 00:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Про костанты, исключения, итераторы  (Прочитано 4387 раз)
8: Undefined index: LANG_NAME
Файл: /var/www/html/Sources/geshi/geshi.php
Строка: 4032
nwnclv
Гость
« : Ноября 30, 2014, 21:21 »

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;
};


Спасибо =)
Записан