如何动态更新矩形的渐变?

joh*_*ers 3 qt qml

我有这个:

    Rectangle{
    id:testrect

    property color gradcolor:"#8C8F8C"
    gradient:
        Gradient {
        GradientStop { position: 0.0; color: gradcolor }
        GradientStop { position: 0.17; color: "#6A6D6A" }
        GradientStop { position: 0.77; color: gradcolor }
        GradientStop { position: 1.0; color: "#6A6D6A" }
        }
Run Code Online (Sandbox Code Playgroud)

在子 MouseArea 中,我想这样做:

         onEntered: {
            testrect.gradcolor="white"
            parent.border.color = Qt.lighter("#6A6D6A")
Run Code Online (Sandbox Code Playgroud)

边框颜色会根据需要发生变化,但渐变颜色不会。是因为渐变不是实时从 gradcolor 属性中提取的吗?解决这个问题的最佳方法是什么?

koo*_*jah 5

问题似乎是,如果您不指示哪个元素包含该属性,则您的Gradient元素不会链接到。gradcolor这对我有用:

Rectangle{
    id:testrect
    width: 200
    height: 200
    property color gradcolor: "green"
    gradient: Gradient {
        GradientStop { position: 0.0; color: testrect.gradcolor }
        GradientStop { position: 0.17; color: "#6A6D6A" }
        GradientStop { position: 0.77; color: testrect.gradcolor }
        GradientStop { position: 1.0; color: "#6A6D6A" }
    }

    MouseArea {
        anchors.fill:parent
        hoverEnabled: true  // Mandatory for hover events to work
        onEntered: {
            testrect.gradcolor = "red";
        }
        onExited: {
            testrect.gradcolor = "blue";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有关 QML 范围的更多信息可以在此处找到