我有这个:
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 属性中提取的吗?解决这个问题的最佳方法是什么?
问题似乎是,如果您不指示哪个元素包含该属性,则您的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)