2016-09-12 7 views
2

QImageをC++からQMLに読み込もうとしています。そこで私はすでにQQuickPaintedItemのサブクラスを作成しました。このクラスでは、QImage(QVariantにキャスト)をスロットを使ってロードしています(この場合、QMLは転送としてのみ使用します)。しかし私には1つの問題しかありません。私はQImageを値渡ししています。QMLからC++への引数や参照を渡すことはできません。C++からQMLへ、さらにC++へのオブジェクトのコピーを避けるには?

したがって、C++からQMLへ、またC++へのオブジェクトのコピーを避けることができるトリックがあるかどうか?

答えて

4

「トリック」はQtのに組み込まれています。データが含まれている他の多くのクラスと同様、QImageはAKAコピー・オン・ライト/のCoW、quote from Qt5 docsを共有する暗黙的なデータを使用しています。

QImageのオブジェクトを渡すことができますQImageクラスはimplicit data sharingを使用しているので、

Qtのコンテキストでの意味の詳細については、QImageのインスタンスは非常に小さく、値として渡すのが安いです。基本的には、参照カウントを持つ共有データへのポインタです。インスタンスが変更されると、参照カウントが1より大きい場合、がデタッチされたが最初に参照されますが、変更していないときはポインタをコピーするだけです。

+0

ありがとうございます!非常に明確で有用な説明! –

関連する問題