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

Dre*_*Dru 9 qt qml qtquickcontrols2

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

Drawer {
    id: drawer
    width: parent.width/2
    height: parent.height
    modal: true
    ...
}
Run Code Online (Sandbox Code Playgroud)

风格:

[Controls]
Style=Material

[Material]
Theme=Dark
Accent=Red
Primary=#c64949
Run Code Online (Sandbox Code Playgroud)

我想改变抽屉阴影的颜色.样式材质使用白色作为阴影(打开抽屉右侧).

- 由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)
}
Run Code Online (Sandbox Code Playgroud)

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

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

Max*_*sov 4

正如@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"
              }
    }
}
Run Code Online (Sandbox Code Playgroud)

默认边缘位于左侧,因此从那里拖动它。

链接:

文档

抽屉源码