我有一个自定义的 QML 按钮,如下所示。
import QtQuick 2.15
import QtQuick.Controls 2.15
Button{
id: dashId
width: 155
height: 40
implicitWidth: 155
implicitHeight: 40
text: 'hello'
flat: true
property color colorNormal: '#353535'
property color colorHovered: '#04b9b9'
property color colorClicked: '#4d4f50'
background: Rectangle{
id: bgColor
radius: 10
color: internal.hoverColor
}
contentItem: Item {
id: buttonItem
visible: true
Text {
id: buttonText
text: dashId.text
anchors.centerIn: parent
color: 'white'
}
}
QtObject{
id: internal
property var hoverColor: if(dashId.down){
dashId.down ? colorClicked : colorNormal
}else{
dashId.hovered ? colorHovered : colorNormal
}
}
}
悬停时,其默认悬停颜色仍然位于自定义悬停颜色之上,而不仅仅是自定义颜色。
我在 Windows 10 上使用 Qt6 和 QtQuick 1.14.1。
我也有类似的问题。在 macOS 和 Linux 上,所有按钮均按预期呈现,但在 Windows 上,会过渡到所需的悬停颜色,然后按钮会淡出为白色。
问题已解决:
平:真实
我发现了问题。 我必须在按钮内设置
highlighted: true
和 flat: true
。
设置
flat: true
和down: false
以消除所有变色效果!