Qt 如何访问GridView或ListView元素的属性
这是代码,我创建了4个按钮。当一个被点击时,我希望它的颜色变为红色,其他所有的颜色都变为黑色。 但看起来我无法访问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
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//