首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改QML Button Qt Quick Controls 2的背景色?

如何更改QML Button Qt Quick Controls 2的背景色?
EN

Stack Overflow用户
提问于 2018-09-04 07:40:00
回答 3查看 14.6K关注 0票数 3

我只是想改变QML按钮的背景颜色,但似乎没有简单的方法。你能告诉我一个简单的方法来改变QML按钮的背景颜色吗?谢谢!

更新:我搜索过的代码:

代码语言:javascript
运行
复制
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
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-04 14:47:52

QtQuick.Controls 2的常见方法是重新定义默认的Control可视属性以自定义Control。正如我上面所说的,这种方法的缺点是你不能改变,例如,只改变背景颜色。覆盖Control.background会迫使你重新定义所有元素,包括边框、颜色、动画等。

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

例如:

代码语言:javascript
运行
复制
Button {        
    text: "Test button"
    palette {
        button: "green"
    }
}

但你应该明白,内部来源可能会在未来发生变化。此外,您还必须自己想象指定的Control使用哪些调色板属性。

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

票数 8
EN

Stack Overflow用户

发布于 2021-03-22 17:23:36

与QT Quick 2配合使用:

代码语言:javascript
运行
复制
Button {
        id: button
        text: qsTr("Button text")

        background: Rectangle {
                color: parent.down ? "#bbbbbb" :
                        (parent.hovered ? "#d6d6d6" : "#f6f6f6")
        }
}

上面的代码在按钮按下或悬停时更改按钮颜色。还可以添加边框或其他自定义设置。

票数 4
EN

Stack Overflow用户

发布于 2021-10-28 18:41:12

只需使用ButtonMaterial.background就可以做到这一点

代码语言:javascript
运行
复制
Button 
{
    id: button
    Material.background:Material.Red
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52157138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档