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

How to change shadow color of Qt QML Drawer (without declaring custom Style)?

我使用 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

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

-- 赏金赞助商编辑--

我发现影子被定义了,即。这里: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,怎么能一次性修改呢?

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

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

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