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

标签 qt qml qtquickcontrols2

我使用 QtQuick.Controls 2.2 中的 Drawer

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)
}

如果没有定义一种全新的样式,如何一次性修改它们?

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

最佳答案

您要找的是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

关于qt - 如何更改 Qt QML Drawer 的阴影颜色(不声明自定义样式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46387349/

相关文章:

linux - Linux 上的 Qt 配置文件 (qtrc) 在哪里?

qt - 移动文本框编辑区域

c++ - Qt Quick Controls 2.0 文本域无法选择文本

qml - 如何解决mac上的模块 ""QtQuick.Controls“未安装2.0版”

c++ - fork() 和 execv() 之后的 QProcess 问题

c++ - 如何为 Windows 7 x64 构建 64 位 Qt 5.3?使用 MinGW-w64 和 MSVS 构建之间有什么区别吗?

c++ - 非阻塞 worker - 中断文件复制

c++ - 向 QML 应用程序发送键盘事件

c++ - QML:如何检索默认字体对象?

c++ - 将 QList<customobj *> 暴露给 QML