Qt QML中中继器子级的单个ID
我想知道在QML中是否可以将单个ID分配给中继器的子级 例如,如果我的中继器要创建10个矩形,如何为每个矩形分配唯一的id?e、 g.rec1、rec2等。如上所述,它不是常规属性,不能在运行时设置或更改。您不能引用此属性,例如,以下代码将不起作用:Qt QML中中继器子级的单个ID,qt,qml,repeater,Qt,Qml,Repeater,我想知道在QML中是否可以将单个ID分配给中继器的子级 例如,如果我的中继器要创建10个矩形,如何为每个矩形分配唯一的id?e、 g.rec1、rec2等。如上所述,它不是常规属性,不能在运行时设置或更改。您不能引用此属性,例如,以下代码将不起作用: console.log(obj.id); > C++中的代码> id 是一个变量名: auto id = new Object(); 当您可以引用名称但无法设置或更改名称时 对于该问题,您可以使用objectName或使用某些指定的访问函数
console.log(obj.id);
<> > C++中的<>代码> id <代码>是一个变量名:
auto id = new Object();
当您可以引用名称但无法设置或更改名称时
对于该问题,您可以使用objectName
或使用某些指定的访问函数来引用项目,例如:
Row {
id:row
anchors.centerIn: parent
spacing: 5
Repeater {
id: container
model: 10
Text {
text:"item" + index
objectName: "item" + index
}
Component.onCompleted: {
container.itemAt(5).text = "changed1";
findChild(row, "item6").text = "changed2";
}
function findChild(obj, name) {
for(var i = 0;i < obj.children.length;i ++){
if(obj.children[i].objectName === name)
return obj.children[i];
}
return undefined;
}
}
}
行{
id:世界其他地区
anchors.centerIn:父对象
间距:5
中继器{
id:集装箱
型号:10
正文{
文本:“项目”+索引
对象名称:“项”+索引
}
Component.onCompleted:{
container.itemAt(5).text=“changed1”;
findChild(第行,“第6项”).text=“changed2”;
}
函数findChild(对象,名称){
for(变量i=0;i
如上所述,它不是常规属性,不能在运行时设置或更改。您不能引用此属性,例如,以下代码将不起作用:
console.log(obj.id);
<> > C++中的<>代码> id <代码>是一个变量名:
auto id = new Object();
当您可以引用名称但无法设置或更改名称时
对于该问题,您可以使用objectName
或使用某些指定的访问函数来引用项目,例如:
Row {
id:row
anchors.centerIn: parent
spacing: 5
Repeater {
id: container
model: 10
Text {
text:"item" + index
objectName: "item" + index
}
Component.onCompleted: {
container.itemAt(5).text = "changed1";
findChild(row, "item6").text = "changed2";
}
function findChild(obj, name) {
for(var i = 0;i < obj.children.length;i ++){
if(obj.children[i].objectName === name)
return obj.children[i];
}
return undefined;
}
}
}
行{
id:世界其他地区
anchors.centerIn:父对象
间距:5
中继器{
id:集装箱
型号:10
正文{
文本:“项目”+索引
对象名称:“项”+索引
}
Component.onCompleted:{
container.itemAt(5).text=“changed1”;
findChild(第行,“第6项”).text=“changed2”;
}
函数findChild(对象,名称){
for(变量i=0;i
只需将此属性添加到任何需要唯一id的QML对象:
readonly property string uniqueId: `${this}`.substring(`${this}`.indexOf("(0x") + 2).replace(")", "")
只需将此属性添加到任何需要唯一id的QML对象:
readonly property string uniqueId: `${this}`.substring(`${this}`.indexOf("(0x") + 2).replace(")", "")
不,这是不可能的。为什么你需要单独的id?在我看来,你有一个给中继器一个id,并使用
.itemAt(index)
引用单独的对象。除此之外,我猜不出你想要完成什么。我同意@eyllanesc的说法,你似乎有XY问题。请描述您的总体目标并提供代码/示例?另外,请确保签出和。不,这是不可能的。您为什么需要单个id?在我看来,您有一个给中继器一个id的命令,并使用.itemAt(index)
引用单个对象。除此之外,我猜不出你想要完成什么。我同意@eyllanesc的说法,你似乎有XY问题。请描述您的总体目标并提供代码/示例?还要确保退房和退房。