次の問題があります。
C++ でモデルを開発し、Qml でビューを開発し、コントローラーを介してそれらを接続しています。私のモデルでは、複数の計算を実行します。また、アプリケーションのユーザーに、qml で記述されたカスタム イベント ハンドラーを作成する可能性を提供します。ここで、固定小数点表記を使用することに決め、対応する C++ クラスを作成しました。ここで、FixedPoint クラス (そのすべての演算子を含む) を、私のアプリケーションを Qml で拡張することを決定した開発者に提供したいと考えています。これまでのところ、すべてのデータを QProperties として提供しましたが、これはコーディング ガイドラインで要求されています。しかし、私のチームでそれらについて話し合うために、他の解決策を受け入れます。明らかに、不動点は同一性ではなく、アルゴリズムはそれをコピーする可能性に依存していますが、これは QObject から継承する場合には許可されていません。
そこで質問が来ます: ID ではない C++ クラス / 構造体を QML に公開するにはどうすればよいですか?
コードの例:
struct FixedPoint
{
FixedPoint(FixedPoint&);
FixedPoint& operator=(FixedPoint&);
...
int mantissa;
int exponent;
}
C++ で記述された QQuickItem のプロパティ (値) として Qml で使用したい:
MyQmlObject{
value{ mantissa: 134; exponent: 3 }
}
プロパティ値は、javascript での計算全体で使用され、途中で何度もコピーされます。したがって、値を FixedPoint* 型のプロパティにすることはできないと思います。私は正しいですか?