Qt qml SwipeView改变动画/转换速度

时间:2018-03-20 14:56:51

标签: qt qml qt5

我正在使用Qt 5.10而我正在使用SwipeView。我想更改滑动动画速度,但在阅读文档后我看不清楚如何。是否有一些解决方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

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

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替换为更大的值