gpt4 book ai didi

qt - QML 项目的子列表深复制

转载 作者:行者123 更新时间:2023-12-02 07:25:03 28 4
gpt4 key购买 nike

我想制作一个项目子属性的深拷贝。我已经尝试过以下方法:

Item {
property variant itemsCopy

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

但是当 otherItem.children 更改时(由于 Z 值不同而排序),itemsCopy 也会更改。是否有解决方法可以打破绑定(bind)或防止 child 被分类?我尝试过 Array s、list,但没有任何效果。更改 tmp 成员将被忽略。

最佳答案

在 MartinJ 提供的示例中,所有对象都将通过引用复制。这是《面向对象的 JavaScript》一书中的经典深复制函数:

function deepCopy(p, c) {
var c = c || {};
for (var i in p) {
if (typeof p[i] === 'object') {
c[i] = (p[i].constructor === Array) ? [] : {};
deepCopy(p[i], c[i]);
} else {
c[i] = p[i];
}
}
return c;
}

关于qt - QML 项目的子列表深复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11353311/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com