如何改变Qt QML Drawer的阴影颜色(不声明自定义样式)?

时间:2017-09-24 06:41:49

标签: qt qml qtquickcontrols2

我使用来自QtQuick.Controls 2.2的抽屉

Drawer {
    id: drawer
    width: parent.width/2
    height: parent.height
    modal: true
    ...
}

风格:

[Controls]
Style=Material

[Material]
Theme=Dark
Accent=Red
Primary=#c64949

我想更改抽屉阴影的颜色。样式材质使用white color for the shadow(在打开的抽屉右侧)。

- 由Bounty赞助商编辑 -

我发现阴影是定义的,即。在这里:http://code.qt.io/cgit/qt/qtquickcontrols2.git/tree/src/imports/controls/Drawer.qml

为:

T.Overlay.modal: Rectangle {
    color: Color.transparent(control.palette.shadow, 0.5)
}

T.Overlay.modeless: Rectangle {
    color: Color.transparent(control.palette.shadow, 0.12)
}

如果没有定义一个全新的Style,怎么能将它们修改为一次性?

我可能会重新定义一个完全自定义的控件..但是应该有一个兼容的版本?

1 个答案:

答案 0 :(得分:1)

您正在寻找的是Overlay.modal属性,如@Blabdouze所述。简单的工作示例:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("test")

    Drawer {
        height: parent.height
        width: parent.width/2
        Rectangle {
            anchors.fill: parent
            color: "green"
        }

        Overlay.modal: Rectangle {
                  color: "red"
              }
    }
}

默认边缘保留在左侧,因此请从此处拖动。

链接:

Documentation

Drawer source code