Qt 阴影被不可见的边框打断
我正在使用下面的代码制作一个简单的按钮Qt 阴影被不可见的边框打断,qt,qml,Qt,Qml,我正在使用下面的代码制作一个简单的按钮 Item { id: menuButton width: 124 height: 124 Rectangle { id: menuButtonIcon x: parent.width - 75 y: parent.height - 80 color: "#C02A25" width: 60 height: 60 radius: width * 0.5 an
Item {
id: menuButton
width: 124
height: 124
Rectangle {
id: menuButtonIcon
x: parent.width - 75
y: parent.height - 80
color: "#C02A25"
width: 60
height: 60
radius: width * 0.5
antialiasing: true
}
DropShadow {
id: menuButtonIconShadow
source: menuButtonIcon
anchors.fill: menuButtonIcon
width: source.width
height: source.height
cached: true
radius: 8.0
samples: 16
color: "#000000"
smooth: true
horizontalOffset: 10.0
verticalOffset: 10.0
spread: 0.2
transparentBorder: True
}
}
由此产生的阴影看起来像是突然结束了
这是为什么?我如何修复它?增加项目的
宽度,看看它是否修复
id: menuButton
width: 140
height: 140
或者减小给定尺寸为60X60的矩形的大小。
因为按钮的位置从x=124-75
开始,即49
和y=124-80
开始,即44
外框大小为124
您的按钮从49
开始,到109
结束(因为宽度
为60
)。在外框中只剩下阴影的11
像素,这对于您正在使用的半径和扩展
来说是不够的
您也可以尝试将扩散减小到0.15
和radius
到6.0
以减小阴影只要您在透明顺序
标记中写入true
而不是true
,代码就可以了。您的菜单按钮
太小。我的按钮就可以了。更改其大小不会有帮助,因为阴影将跟随,并将再次被切断。但这次是一个较小的按钮,这是因为QML scenegraph通过OpenGL从矩形中合成了一些东西,据我所知,所有东西基本上都被剪裁到了它声明的维度。在QML1中是不同的。为了解决这个问题,影子项目应该计算出它的正确大小(通过宽度和高度的绑定是最简单的方法),并使用这些值……但是考虑到这是一个标准项目(事实上),我首先要提出一个bug(并在跟踪程序中搜索类似的问题)。这不是问题的原因。我说过阴影会被不可见的边界打断(或者更准确地说,它会停在围绕其源的虚构矩形处),而不是被窗口或其父窗口打断。即使我使用了2000x2000,这个问题仍然会存在。尽管这是一个丑陋的解决方案。如果我想要一个特定的排列呢?一定还有别的方法我还没找到。