Qt 文本放置阴影

Qt 文本放置阴影,qt,qml,dropshadow,Qt,Qml,Dropshadow,在QML中,有没有合适的方法向文本对象添加外部阴影?我尝试使用DropShadow,但它用黑色填充整个文本字段 Text { id: textId font.pixelSize: 36 font.letterSpacing: 0.9 color: "red" text: "Hello World" DropShadow { anchors.fill: parent verticalOffset: 2

在QML中,有没有合适的方法向文本对象添加外部阴影?我尝试使用DropShadow,但它用黑色填充整个文本字段

Text {
    id: textId
    font.pixelSize: 36
    font.letterSpacing: 0.9
    color: "red"
    text: "Hello World"

    DropShadow {
        anchors.fill: parent
        verticalOffset: 2
        color: "#80000000"
        radius: 1
        samples: 3
    }
}
我还尝试用source替换anchors.fill,并设置文本id。同时在文本对象外部使用DropShadow。没有影子

我的目标是获得css样式的等价物

text-shadow: 0 2px 4px

最简单的方法是使用:

您也可以像在
DropShadow
中那样进行操作,其中
DropShadow
是一个同级项:

import QtQuick 2.9
import QtQuick.Window 2.3
import QtGraphicalEffects 1.0

Window {
    id: window
    width: 800
    height: 600
    visible: true

    Text {
        id: textId
        font.pixelSize: 36
        font.letterSpacing: 0.9
        color: "red"
        text: "Hello World"
    }

    DropShadow {
        anchors.fill: textId
        source: textId
        verticalOffset: 2
        color: "#80000000"
        radius: 1
        samples: 3
    }
}
在本例中,您缺少
源代码
赋值,但如果您尝试将阴影作为
文本的子对象,则递归渲染也会出错:

以递归方式渲染时,ShaderEffectSource:“recursive”必须设置为true


谢谢我尝试了图层并应用了效果,但是如果我将锚定应用到文本对象,它会忽略它。但是如果我使用第二种方法,并将DropShadow作为兄弟,它将使用锚。啊,似乎如果您从第一个代码片段中提取
anchors.fill:parent
,那么它仍然有效。我可能不小心把它忘在里面了。更新了答案。
import QtQuick 2.9
import QtQuick.Window 2.3
import QtGraphicalEffects 1.0

Window {
    id: window
    width: 800
    height: 600
    visible: true

    Text {
        id: textId
        font.pixelSize: 36
        font.letterSpacing: 0.9
        color: "red"
        text: "Hello World"
    }

    DropShadow {
        anchors.fill: textId
        source: textId
        verticalOffset: 2
        color: "#80000000"
        radius: 1
        samples: 3
    }
}