在QML中实现Text
元素的水平滚动效果,可以参看如下代码:
Flickable {
id: flick
width: 350
height: 30
contentWidth: txtSongName.width
contentHeight: txtSongName.height
clip: true
Text {
id: txtSongName
text: "1正在滚动的文字,2正在滚动的文字,3正在滚动的文字,4正在滚动的文字,"
wrapMode: Text.NoWrap
font {
pixelSize: 26
family: "CarobotorOS Sans SC"
styleName: "Medium"
italic: true
}
color: "#D5E1E8"
}
SequentialAnimation {
id: seqAnum
running: flick.contentWidth > flick.width
loops: Animation.Infinite
NumberAnimation {
target: flick
property: "contentX"
from: 0
to: flick.contentWidth - flick.width
duration: 6000
}
NumberAnimation {
target: flick
property: "contentX"
from: flick.contentWidth - flick.width
to: 0
duration: 6000
}
}
}
特点:
- 横向/纵向自由滚动(通过调整
contentWidth/Height
) - 支持触摸拖动和惯性滑动
- 需手动控制文本不换行(
wrapMode: Text.NoWrap
)