是否可以为QML中的备用ListView项目分配2种颜色?我想将第1个列表项目涂成黑色,然后将第2个列表项目涂成蓝色,然后将第3个项目涂成黑色,然后将第4个项目涂成蓝色,依此类推......
如何在qml中实现这个功能?请分享你的想法 . 谢谢 .
您可以使用委托的 index 属性来确定此委托元素是偶数还是奇数,并使用它来更改委托的颜色 .
ListView { anchors.fill: parent model: 3 delegate: Rectangle { width: 20 height: 30 color: index % 2 == 0 ? "blue" : "black" } }
我在我的代码中尝试了类似下面的内容 . 因为我需要在代码中的不同位置使用相同的样式 . 所以我刚刚创建了一个函数 .
ListView { anchors.fill: parent model: 3 delegate: Item{ function altColor(i) { var colors = [ "#E4DDE8", "#00000000" ]; return colors[i]; } Rectangle { width: 20 height: 30 color: altColor(index % 2) } } }
我建议你使用“model.index” - 它完全相同,但让你的代码更容易理解 . 顺便说一句,因此
var colors = [“#E4DDE8”,“#00000000”];
每次调用“altColor”时,都会创建新数组 . 非常低效 . 将数组声明移动到列表视图:
property var colors: ["#E4DDE8", "#00000000"]
虽然问题已经回答,但您仍然可以为Listmodel定义一个保留颜色的属性
ListModel { id: fruitModel ListElement { name: "Apple" cost: 2.45 elementColor: "red" } ListElement { name: "Orange" cost: 2.45 elementColor: "black" } ListElement { name: "Banana" cost: 2.45 elementColor: "gray" } }
并在代表中显示:
Rectangle{ anchors.fillIn:parent color: elementColor }
4 回答
您可以使用委托的 index 属性来确定此委托元素是偶数还是奇数,并使用它来更改委托的颜色 .
我在我的代码中尝试了类似下面的内容 . 因为我需要在代码中的不同位置使用相同的样式 . 所以我刚刚创建了一个函数 .
我建议你使用“model.index” - 它完全相同,但让你的代码更容易理解 . 顺便说一句,因此
每次调用“altColor”时,都会创建新数组 . 非常低效 . 将数组声明移动到列表视图:
虽然问题已经回答,但您仍然可以为Listmodel定义一个保留颜色的属性
并在代表中显示: