嵌套中继器QML Qt

时间:2014-03-01 07:48:31

标签: qt qml qtquick2

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" }
 }

这里我希望从列表中选择每个中间矩形的颜色。即每种颜色必须不同,而不是全部为绿色。

我需要嵌套转发器吗?我该怎么办呢?

1 个答案:

答案 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" }
}
相关问题