Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何访问GridView或ListView元素的属性_Qt_Qml_Qtquick2 - Fatal编程技术网

Qt 如何访问GridView或ListView元素的属性

Qt 如何访问GridView或ListView元素的属性,qt,qml,qtquick2,Qt,Qml,Qtquick2,这是代码,我创建了4个按钮。当一个被点击时,我希望它的颜色变为红色,其他所有的颜色都变为黑色。 但看起来我无法访问color属性 Rectangle { id: root width: 200; height: 100 DelegateModel { id: visualModel model: ListModel { ListElement { my_color: "red" } List

这是代码,我创建了4个按钮。当一个被点击时,我希望它的颜色变为红色,其他所有的颜色都变为黑色。 但看起来我无法访问
color
属性

Rectangle {
    id: root
    width: 200; height: 100

    DelegateModel {
        id: visualModel
        model: ListModel {
            ListElement { my_color: "red" }
            ListElement { my_color: "black" }
            ListElement { my_color: "black" }
            ListElement { my_color: "black" }
        }

        groups: [
            DelegateModelGroup { name: "selected" }
        ]

        delegate: Rectangle {
            id: item
            height: 25
            width: 200
            color:my_color
            MouseArea {
                anchors.fill: parent
                onClicked: {
                   console.log(visualModel.items.get(index).color)
                   for (var i = 0; i < root.count; i++){
                       if(index == i)
                        visualModel.items.get(i).color = "red";
                       else
                        visualModel.items.get(i).color = "black";
                   }
                }
            }
        }
    }

    ListView {
        anchors.fill: parent
        model: visualModel
    }
}
矩形{
id:根
宽度:200;高度:100
委托模型{
id:visualModel
模型:ListModel{
列表元素{my_color:“red”}
列表元素{my_color:“黑色”}
列表元素{my_color:“黑色”}
列表元素{my_color:“黑色”}
}
小组:[
DelegateModelGroup{name:“选定”}
]
代表:矩形{
id:项目
身高:25
宽度:200
颜色:我的颜色
鼠耳{
锚定。填充:父级
再次点击:{
log(visualModel.items.get(index.color)
对于(变量i=0;i
我建议您使用QML控件。通常用于
操作
,但也可以用于任何其他
项目
。从Qt文档:

可以为对象或对象添加对ExclusiveGroup的支持 控制它应该有一个checked属性,并且 checkedChanged、toggled()或toggled(bool)信号

因此,我们所需要的就是添加合适的属性。小例子:

导入QtQuick 2.5
导入QtQuick.Window 2.0
导入QtQuick.Controls 1.4
窗口{
宽度:200
身高:400
ExclusiveGroup{id:ExclusiveGroup}
列表视图{
锚定。填充:父级
1.5.利润率:5
间距:2
型号:10
代表:矩形{
id:myItem
已检查属性布尔值:false//