Row {
Rectangle { width: 10; height: 20; color: "red" }
Repeater {
model: 10
Rectangle { width: 20; height: 20; radius: 10; color: "green" }
}
Rectangle { width: 10; height: 20; color: "blue" }
}
这里我希望从列表中选择每个中间矩形的颜色。即每种颜色必须不同,而不是全部为绿色。
我需要嵌套转发器吗?我该怎么办呢?
答案 0 :(得分:2)
当模型只是一个数字时,您可以使用index
,如下所示。然后,您需要将此数字转换为颜色,例如使用Qt.rgba()
或Qt.hsva()
函数,如下所示。代码中的第一个转发器(改编自here)将为彩虹效果创建滑动色调。
如果您只想将颜色列为数组并使用转发器来显示它们,则第二个转发器会显示如何执行此操作。只需将数组设置为模型,然后在转发器中使用modelData
来访问该值。
Row {
Rectangle { width: 10; height: 20; color: "red" }
// use index (values 0..9) to generate "rainbow"
Repeater {
model: 10
Rectangle {
width: 20; height: 20; radius: 10
color: Qt.hsla(index/(10-1), 1, 0.5, 1)
}
}
// use modelData to get color string from model
Repeater {
model: [ "#808080", "#1100F0", "#F20F20", "#F3F620" ]
Rectangle {
width: 20; height: 20; radius: 10
color: modelData
}
}
Rectangle { width: 10; height: 20; color: "blue" }
}