首页 文章

如何更改QML按钮Qt Quick Controls 2的背景颜色?

提问于
浏览
0

我只是想改变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 回答

  • 2

    QtQuick.Controls 2 的常用方法是重新定义默认 Control 可视属性以自定义 Control . 如上所述,这种方法的缺点是你不能改变,例如,只改变背景颜色 . 覆盖 Control.background 强制您重新定义所有元素,包括边框,颜色,动画等 .

    查看 Buttonsource,我们可以看到基于Control.palette定义默认 Control.background 属性 . 使用此属性,我们可以覆盖 Control 属性:

    例如:

    Button {        
        text: "Test button"
        palette {
            button: "green"
        }
    }
    

    但是你应该明白,未来可能会改变内部资源 . 此外,您必须自己想象指定的Control使用哪些调色板属性 .

    在上面的示例中,我重新定义了指定Control的调色板 . 但您可以全局重新定义调色板,可以在qtquickcontrols2.conf中设置颜色,也可以在C - QGuiApplication::setPalette()中设置自定义调色板 .

相关问题