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,这个问题仍然会存在。尽管这是一个丑陋的解决方案。如果我想要一个特定的排列呢?一定还有别的方法我还没找到。