我只是想改变QML按钮的背景颜色,但似乎没有简单的方法 . 你能告诉我一个改变QML Button背景颜色的简单方法吗?谢谢!
更新:我搜索过的代码:
import QtQuick 2.6
import QtQuick.Controls 2.1
Button {
id: control
text: qsTr("Button")
contentItem: Text {
text: control.text
font: control.font
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
background: Rectangle {
implicitWidth: 100
implicitHeight: 40
opacity: enabled ? 1 : 0.3
border.color: control.down ? "#17a81a" : "#21be2b"
border.width: 1
radius: 2
color: "black" // I update background color by this
}
}
1 回答
QtQuick.Controls 2
的常用方法是重新定义默认Control
可视属性以自定义Control
. 如上所述,这种方法的缺点是你不能改变,例如,只改变背景颜色 . 覆盖Control.background
强制您重新定义所有元素,包括边框,颜色,动画等 .查看
Button
的source,我们可以看到基于Control.palette定义默认Control.background
属性 . 使用此属性,我们可以覆盖Control
属性:例如:
但是你应该明白,未来可能会改变内部资源 . 此外,您必须自己想象指定的Control使用哪些调色板属性 .
在上面的示例中,我重新定义了指定Control的调色板 . 但您可以全局重新定义调色板,可以在qtquickcontrols2.conf中设置颜色,也可以在C - QGuiApplication::setPalette()中设置自定义调色板 .