我有以下问题。
我正在开发一个 C++ 模型和一个 Qml 视图,通过控制器连接它们。在我的模型中,我执行多个计算。我还为我的应用程序的用户提供了编写自定义事件处理程序的可能性,用 qml 编写。现在我遇到了一个点,我决定使用定点表示法,并且我编写了一个相应的 C++ 类。现在我想向决定在 Qml 中扩展我的应用程序的开发人员提供 FixedPoint 类 - 包括它的所有运算符。到目前为止,我以 QProperties 的形式提供了所有数据,这是编码指南所要求的。但我愿意在我的团队中讨论其他解决方案。显然,一个固定点是没有身份的,算法依赖于复制它的可能性,这在从 QObject 继承时是不允许的。
所以问题来了:我怎样才能将一个 c++ 类/结构暴露给 QML,这不是一个身份?
代码中的一个例子:
struct FixedPoint
{
FixedPoint(FixedPoint&);
FixedPoint& operator=(FixedPoint&);
...
int mantissa;
int exponent;
}
我想在 Qml 中使用它作为用 C++ 编写的 QQuickItem 的属性(值):
MyQmlObject{
value{ mantissa: 134; exponent: 3 }
}
然后,属性值在 javascript 中的整个计算中使用,并在整个过程中被复制多次。因此,我认为我不能将 value 设为 FixedPoint* 类型的属性。我对吗?