如何更改 Qt QML Drawer 的阴影颜色(不声明自定义样式)?
Posted
技术标签:
【中文标题】如何更改 Qt QML Drawer 的阴影颜色(不声明自定义样式)?【英文标题】:How to change shadow color of Qt QML Drawer (without declaring custom Style)? 【发布时间】:2017-09-24 06:41:48 【问题描述】:我使用 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
我想改变抽屉阴影的颜色。样式材质使用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)
如果不定义全新的样式,如何一次性修改它们?
我大概可以重新定义一个完全自定义的控件.. 但是应该有一个兼容的版本?
【问题讨论】:
This 链接应该对您有所帮助。 这不完全是 OP(或我自己)所寻求的 - 链接描述了背景的自定义 - 我们想要 code.qt.io/cgit/qt/qtquickcontrols2.git/tree/src/imports/… - 覆盖 - 更改。 您是否检查过新的(在 Qt 5.10 中引入)Overlay 附加属性?好像可以附在ApplicationWindow
。也许如果您在主窗口中定义这些属性,它将适用于所有弹出窗口? (不幸的是我无法测试它我的机器上没有 Qt 5.10)
所以他们没有提供设置选项。您可以滚动您自己的该琐碎控件的实现,或者自省到对象树以到达所需的对象并操作其属性,类似于我在这里提出的建议:***.com/questions/48736260/…
【参考方案1】:
正如@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
【讨论】:
以上是关于如何更改 Qt QML Drawer 的阴影颜色(不声明自定义样式)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Cascades、Blackberry 10 中使用 Qt/QML/C++ 从另一个 qml 文件中更改一个 qml 文件中的标签文本?