SwipeView要素に基づいてParallax Viewを作成しようとしています。 QMLドキュメントの例は、リストビューでそれを達成する方法を示しています。QML:SwipeViewのアイテムの中間スワイプ位置
今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
}
}
}
、これは動作しますが、私はそれが私が望む行動を達成するために以下のコードを必要とするため、SwipeViewを使用したいリストビューのinstad:
SwipeView {
id: list
anchors.fill: parent
spacing: 20
Repeater {
model: _some_cpp_list
delegate: MyDelegate {
logic: modelData
}
}
x: -list.contentX/2
:
は、私はこのラインで使用するオフセットSwipeViewの現在の「X」の位置やスワイプにアクセスできる方法はありますか?
私が今までに見つけた最も近いものはx: -swipeView.contentData[0].x/2
ですが、スムーズな移行ではなく項目のジャンプが発生します。
アイテムの位置がListViewによって管理されるため、水平方向のListViewのアイテムのx座標を制御することはできません。最初の例でアイテムの位置を操作できる理由は、実際にデリゲートの位置を操作していないが、別のアイテムがLoaderデリゲートにラップされているためです。 SwipeViewページでは、同様のラッパーを使用しない限り、QML Translateを使用して変換を適用できます。 SwipeViewの内部ListViewとそのcontentXには、SwipeView.contentItemを介してアクセスできます。 – jpnurmi
私はどれくらい助けてくれるのか分かりませんが、http://doc.qt.io/qt-5/qtquick-views-example.htmlのParallaxViewの例もチェックしてください。 – jpnurmi
@jpnurmiそう...これはあまりにもいいコメントをコメントにするコメント。 :D是非、私はそれをupvoteしましょう! – BaCaRoZzo