4

QML Repeater docsが最初に言っていることの意味を明確にするのを手伝ってくれる人はいますか

“リピーターによってインスタンス化されたアイテムは、リピーターの親の子として順番に挿入されます。”,

その後

注:リピーター アイテムは、インスタンス化したすべてのアイテムを所有します。リピーターによって作成されたアイテムを削除または動的に破棄すると、予期しない動作が発生します。」

QML のビジュアル オブジェクトの親子関係と所有権は同じではありませんか?

4

1 に答える 1

7

QtQuick では、オブジェクトの親 (所有権) とビジュアルの親は同じではありません。オブジェクトの親は作成時に設定され、変更されることはありません。視覚的な親は、'parent' プロパティを介していつでも変更できます。

Repeater はデリゲートを作成し、所有権をそれ自体に設定し、視覚的な親をその親に設定します。つまり、Repeater はデリゲートを所有しますが、ビジュアル プレゼンテーションはその親 (ほとんどの場合、ポジショナー) に任せます。

Qt 5 のドキュメントは、この分野で改善されています。ここにスニペットがあります (Qt 5 ドキュメントのスナップショットは最近更新されていません - これはソースからのものです):

Qt Quick を使用する QML アプリケーションには、2 種類の親子関係があります。最初の種類は、オブジェクトの有効期間のセマンティクスを決定する所有権の親 (QObject 親とも呼ばれます) です。2 番目の種類は、アイテムがキャンバス上のどこに描画されるかを決定する visual-parent と、特定のプロパティ (たとえば、不透明度はビジュアルの子に適用されます) です。

ほとんどの場合、ビジュアルの親は所有権の親と同じです。このトピックの詳細については、Visual Parent に関するドキュメントを参照してください。

残念ながら、「視覚的な親」のトピックはまだ書かれていません。

于 2012-07-01T23:34:08.910 に答える