QML 文本阴影
QML Text Drop Shadow
在 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
}
}
我也尝试用源代码替换 anchors.fill 并设置文本 ID。同样在 Text 对象之外使用 DropShadow。没有影子。
我的目标是获得 css 风格的等价物
text-shadow: 0 2px 4px
最简单的方法是使用 item layers:
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"
layer.enabled: true
layer.effect: DropShadow {
verticalOffset: 2
color: "#80000000"
radius: 1
samples: 3
}
}
}
您也可以像在 DropShadow
docs 中那样进行操作,其中 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
}
}
在您的案例中您缺少 source
赋值,但是如果您尝试将阴影作为 Text
的子项,您也会收到有关递归渲染的错误:
ShaderEffectSource: 'recursive' must be set to true when rendering recursively.
在 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
}
}
我也尝试用源代码替换 anchors.fill 并设置文本 ID。同样在 Text 对象之外使用 DropShadow。没有影子。
我的目标是获得 css 风格的等价物
text-shadow: 0 2px 4px
最简单的方法是使用 item layers:
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"
layer.enabled: true
layer.effect: DropShadow {
verticalOffset: 2
color: "#80000000"
radius: 1
samples: 3
}
}
}
您也可以像在 DropShadow
docs 中那样进行操作,其中 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
}
}
在您的案例中您缺少 source
赋值,但是如果您尝试将阴影作为 Text
的子项,您也会收到有关递归渲染的错误:
ShaderEffectSource: 'recursive' must be set to true when rendering recursively.