У меня есть следующая проблема.
Я разрабатываю модель на С++ и View в Qml, подключая их через контроллеры. В моей модели я выполняю несколько вычислений. Я также предлагаю пользователям моего приложения возможность писать пользовательские обработчики событий, написанные в qml. Теперь я наткнулся на точку, где решил использовать нотацию с фиксированной точкой, и я написал соответствующий класс С++. Теперь я хочу предложить классу FixedPoint, включая всех его операторов, разработчикам, которые решили продлить мое приложение в Qml. До сих пор я предлагал все данные как QProperties, что требуется в соответствии с инструкциями по кодированию. Но я открыт для других решений, чтобы обсудить их в моей команде. Ясно, что фиксированная точка не является идентификатором, а алгоритмы полагаются на возможность ее копирования, что не допускается при наследовании от QObject.
Итак, возникает вопрос: как я могу представить класс С++ С++ для QML, который НЕ является личным?
Пример в коде:
struct FixedPoint
{
FixedPoint(FixedPoint&);
FixedPoint& operator=(FixedPoint&);
...
int mantissa;
int exponent;
}
Я хочу использовать его в Qml как свойство (значение) QQuickItem, написанное на С++:
MyQmlObject{
value{ mantissa: 134; exponent: 3 }
}
Значение свойства затем используется во всех вычислениях в javascript и копируется несколько раз длиннее. Поэтому я не могу сделать значение свойства типа FixedPoint *, я думаю. Я прав?