Qt QML中中继器子级的单个ID

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或使用某些指定的访问函数

我想知道在QML中是否可以将单个ID分配给中继器的子级

例如,如果我的中继器要创建10个矩形,如何为每个矩形分配唯一的id?e、 g.rec1、rec2等。

如上所述,它不是常规属性,不能在运行时设置或更改。您不能引用此属性,例如,以下代码将不起作用:

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问题。请描述您的总体目标并提供代码/示例?还要确保退房和退房。