Я пытаюсь создать представление Parallax на основе элемента SwipeView. Примеры в QML документации показано, как достичь его с ListView: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
}
}
}
Теперь, это работает, но вместо внесения ListView я хочу использовать SwipeView, так как он требует меньше кода для достижения поведения я хочу:
SwipeView {
id: list
anchors.fill: parent
spacing: 20
Repeater {
model: _some_cpp_list
delegate: MyDelegate {
logic: modelData
}
}
есть ли способ, я мог бы получить доступ к текущей позиции SwipeView в «х» или проведите пальцем по экрану смещения для использования в этой строке:
x: -list.contentX/2
?
Ближайшим, который я нашел до сих пор, является x: -swipeView.contentData[0].x/2
, но он вызывает прыжки через предметы, а не плавный переход.
Вы не можете управлять x-координатой элементов в горизонтальном ListView, поскольку позиции позиций управляются ListView. Причина, по которой вы можете манипулировать позициями позиции в первом примере, заключается в том, что вы фактически не манипулируете позицией делегата, а другой элемент, заключенный в делегат Loader. Для страниц SwipeView, если вы не хотите использовать похожие обертки, вы можете применить преобразование с помощью QML Translate. Вы можете получить доступ к внутреннему списку ListView SwipeView и его содержимомуX через SwipeView.contentItem. – jpnurmi
Я не знаю, сколько это поможет, но также проверьте пример ParallaxView по адресу http://doc.qt.io/qt-5/qtquick-views-example.html – jpnurmi
@jpnurmi Geez ... это слишком приятно комментарий, чтобы просто быть комментарием. : D Давай, позвольте мне поддержать это! – BaCaRoZzo