如何知道网格视图是否滚动到最后



我正在使用网格视图,该视图可以从左到右滚动。当单击网格视图中的每个项目时,新屏幕将通过从当前网格项目位置到屏幕宽度和屏幕高度的动画启动。当网格视图向右滚动后,单击第二列元素时,网格项目位置出错。有没有什么办法解决这一问题 ?还是有什么方法可以检查网格视图是否滚动到极右?

在下面放置我的代码:

      GridView {
                        id: featuresGrid
                        snapMode: ListView.SnapToItem
                        clip:true
                        x: 135
                        y: 122
                        width:1650
                        height:485
                        cellWidth: 825
                        cellHeight: 160
                        flow: GridView.FlowTopToBottom
                        model:favouriteapp
                        delegate:featureGridTile
                        focus: false
                    }
    ListModel {
            id:favouriteapp
            ListElement {
                featureName: "media & radio"
            }
            ListElement {
                featureName: "phone"
            }
            ListElement {
                featureName: "climate"
            }
            ListElement {
                featureName: "navigation"
            }
            ListElement {
                featureName: "ambient lighting"
            }
            ListElement {
                featureName: "settings"
            }
            ListElement {
                featureName: "camera"
            }
            ListElement {
                featureName: "dynamic-i"
            }
            ListElement {
                featureName: "bluetooth"
            }

        }
   Component {
                id: featureGridTile
                Item {
                    id:grid_view_rect
                    width:featuresGrid.cellWidth
                    height:featuresGrid.cellHeight
                    Text{
                        anchors.fill: parent
                        text : featureName
                        opacity: 1
                    }
                    MouseArea{
                        anchors.fill: parent
                        onClicked: {
                            featuresGrid.currentIndex = index
                           //Goes to the next screen with the current clicked grid item X and Y position  
                        }
                    }
                }
            }

您要寻找的是mapFromItemmapToItem函数:http://doc.qt.io/qt-5/qml-qtquick-item.html#mapfromitem-method-1

Item {
    id: rootItem
    anchors.fill: parent

    Rectangle {
        id: myRect
        color: 'red'
        width: 50
        height: 50
        // the + 0 * featuresGrid.contentX will force the binding to reevaluate when draged. Maybe you don't want that. Comment it out and try
        x: featuresGrid.currentItem.mapToItem(rootItem, 0, 0).x + 0 * featuresGrid.contentX
        y: featuresGrid.currentItem.mapToItem(rootItem, 0, 0).y + 0 * featuresGrid.contentY
        z: 1
    }

    GridView {
        id: featuresGrid
        snapMode: ListView.SnapToItem
        clip:true
        x: 135
        y: 122
        width:1650
        height:485
        cellWidth: 825
        cellHeight: 160
        flow: GridView.FlowTopToBottom
        model:favouriteapp
        delegate:featureGridTile
        focus: false
    }
    ListModel {
        id:favouriteapp
        ListElement {
            featureName: "media & radio"
            soureIcon:"file:graphics/Icons/MediaIcon.png"
            feature:"Media"
        }
        ListElement {
            featureName: "phone"
            soureIcon:"file:graphics/Icons/Phoneicon.png"
            feature:"Phone"
        }
        ListElement {
            featureName: "climate"
            soureIcon:"file:graphics/Icons/ClimateIcon.png"
            feature:"Climate"
        }
        ListElement {
            featureName: "navigation"
            soureIcon:"file:graphics/Icons/NavIcon.png"
            feature:"Navigation"
        }
        ListElement {
            featureName: "ambient lighting"
            soureIcon:"file:graphics/Icons/ALIcon.png"
            feature:"AL"
        }
        ListElement {
            featureName: "settings"
            soureIcon:"file:graphics/Icons/SettingsIcon.png"
            feature:"Settings"
        }
        ListElement {
            featureName: "camera"
            soureIcon:"file:graphics/Icons/CamIcon.png"
            feature:"Camera"
        }
        ListElement {
            featureName: "dynamic-i"
            soureIcon:"file:graphics/Icons/dynamicIcon.png"
            feature:"Dynamic_I"
        }
        ListElement {
            featureName: "bluetooth"
            soureIcon:"file:graphics/Icons/Icon Bluetooth.png"
            feature:"Bluetooth"
        }

    }
}
Component {
    id: featureGridTile
    Item {
        id:grid_view_rect
        width:featuresGrid.cellWidth
        height:featuresGrid.cellHeight
        Rectangle{
            anchors.fill: parent
            color: "white"
            opacity: 1
            border.color: 'black'
        }
        Text{
            anchors.fill: parent
            text : featureName
            opacity: 1
        }
        MouseArea{
            anchors.fill: parent
            onClicked: {
                featuresGrid.currentIndex = index
                //Goes to the next screen with the current clicked grid item X and Y position
            }
        }
    }
}

最新更新