4

アイテムの子プロパティのディープ コピーを作成したいと考えています。私は次のようなことを試しました:

Item {
  property variant itemsCopy

  Component.onCompleted: {
    var tmp = otherItem.children
    itemsCopy = tmp
  }
}

ただし、otherItem.children が変更されると (Z 値が異なるためにソートされます)、itemsCopyも変更されます。バインディングを解除する回避策や、子がソートされないようにする方法はありますか? Array s、list を試しましたが、何も機能しません。tmp のメンバーの変更は無視されます。

4

2 に答える 2

5

自分でコピーを取ることができます:

import QtQuick 1.0

Item {
  property variant itemsCopy

  Component.onCompleted: {
    var tmp = otherItem.children
    var copy = []
    for (var i = 0; i < tmp.length; ++i)
        copy[i] = tmp[i]
    itemsCopy = copy;
  }
}

QtQuick 2.0 では、次のように使用するのが少し簡単になりましたproperty var

import QtQuick 2.0

Item {
  property var itemsCopy: []

  Component.onCompleted: {
    var tmp = otherItem.children
    for (var i = 0; i < tmp.length; ++i) 
        itemsCopy[i] = tmp[i]
  }
}
于 2012-07-06T06:12:22.677 に答える