Qt qml SwipeView 改变动画/过渡速度

问题描述 投票:0回答:2

我正在使用 Qt 5.10,并且我正在使用 SwipeView。我想更改滑动动画速度,但阅读文档后我不知道如何更改。有什么解决方法可以做到这一点吗?

qt qml qt5
2个回答
2
投票

我尝试这样做的原因是因为,不知道为什么,滑动过渡动画非常慢(见下文) 这是我的代码:

ColumnLayout{
        anchors.fill: parent

        Item{
            id:modulecontainer

            Layout.fillHeight: true
            Layout.fillWidth: true

            SwipeView{
                id: moduleview
                anchors.fill: parent
                interactive: loggedUser.role==User.AdminRole
                clip: true
                orientation: Qt.Horizontal
                Item {
                    id: firstPage
                    Loader {
                        anchors.fill: parent
                        id:moduleLoader


                    }
                }
                Item {
                    id: secondPage
                    Rectangle{
                        anchors.fill: parent
                        color: "red"

                    }
                }
             }
           }
      }

enter image description here

我解决了这个问题,只是从 SwipeView 的源代码中获取了

contentItem
实现的代码:

  ....  
  SwipeView{
      id: moduleview
      ....
      contentItem: ListView {
                model: moduleview.contentModel
                interactive: moduleview.interactive
                currentIndex: moduleview.currentIndex

                spacing: moduleview.spacing
                orientation: moduleview.orientation
                snapMode: ListView.SnapOneItem
                boundsBehavior: Flickable.StopAtBounds

                highlightRangeMode: ListView.StrictlyEnforceRange
                preferredHighlightBegin: 0
                preferredHighlightEnd: 0
                highlightMoveDuration: 250
                //                    min:10

                maximumFlickVelocity: 4 * (moduleview.orientation === 
                Qt.Horizontal ? width : height)
            }
  }
  ....

结果: enter image description here

不知道为什么这可以解决问题,但我分享只是为了防止其他人面临同样的问题。如果需要更高的动画速度,只需将 MaximumFlickVelocity 因子从 4 替换为更大的值


0
投票

对于本线程的后续读者,在 Qt5.14 中,您可以使用最初建议的修复来设置此内容:

Component.onCompleted: contentItem.highlightMoveDuration = 10000;
© www.soinside.com 2019 - 2024. All rights reserved.