SwipeView 要素に基づいて視差ビューを作成しようとしています。QML ドキュメントの例は、ListView でそれを実現する方法を示しています。
Image {
id: background
source: "background.png"
fillMode: Image.TileHorizontally
x: -list.contentX / 2
width: Math.max(list.contentWidth, parent.width)
}
ListView {
id: list
anchors.fill: parent
spacing: 20
snapMode: ListView.SnapToItem
orientation: ListView.Horizontal
highlightRangeMode: ListView.StrictlyEnforceRange
boundsBehavior: Flickable.StopAtBounds
maximumFlickVelocity: 1000
model: _some_cpp_list
//Loader is used as a workaround for QTBUG-49224
delegate: Loader {
id: loaderDelegate
source: "MyDelegate.qml"
width: myScreen.width
height: myScreen.height
onLoaded: {
loaderDelegate.item.logic = modelData
}
}
}
さて、これは機能しますが、ListView の代わりに SwipeView を使用したいと思います。これは、必要な動作を実現するために必要なコードが少ないためです。
SwipeView {
id: list
anchors.fill: parent
spacing: 20
Repeater {
model: _some_cpp_list
delegate: MyDelegate {
logic: modelData
}
}
この行で使用する SwipeView の現在の「x」位置またはスワイプ オフセットにアクセスする方法はありますか。
x: -list.contentX / 2
?
これまでに見つけた最も近いものは ですx: -swipeView.contentData[0].x / 2
が、スムーズな移行ではなく、アイテムを飛び越える原因となります。