Qt 我们如何在QML中实现图像列表的收缩放大?

Qt 我们如何在QML中实现图像列表的收缩放大?,qt,qml,Qt,Qml,我正在使用基于Listview的QML实现一个Imageviewer,Listview的代理是图像。需要注意的是,图像显示在整个屏幕上。我需要包括功能捏缩放,这将有助于在图像缩放。请推荐任何好的源代码或如何继续示例。我创建了一个用于收缩缩放的演示,将矩形缩放两个接触点 import QtQuick 2.5 import QtQuick.Controls 1.4 import QtQuick.Window 2.0 Window { visible: true width: 100

我正在使用基于Listview的QML实现一个Imageviewer,Listview的代理是图像。需要注意的是,图像显示在整个屏幕上。我需要包括功能捏缩放,这将有助于在图像缩放。请推荐任何好的源代码或如何继续示例。

我创建了一个用于收缩缩放的演示,将
矩形缩放两个接触点

import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Window 2.0

Window {
    visible: true
    width: 1000
    height: 1000
    title: qsTr("Hello World")
    MultiPointTouchArea {
        id: multiPoint
        anchors.fill: parent
        touchPoints: [
            TouchPoint { id: point1 },
            TouchPoint { id: point2 }
        ]
        property real factor: 1
        property bool isReleased: false // ignore the TouchUpdate after released
        onTouchUpdated: {
            if(isReleased){
                isReleased = false
                return
            }
            if(point1.x != 0 && point2.x != 0){
                var s = Math.sqrt(Math.pow(point1.x - point2.x, 2) + Math.pow(point1.y - point2.y, 2)) /
                        Math.sqrt(Math.pow(point1.startX - point2.startX, 2) + Math.pow(point1.startY - point2.startY, 2))
                rect.scale = s * factor
            }
        }
        onReleased: {
            factor = rect.scale
            isReleased = true
        }
    }
    Rectangle {
        id: rect
        anchors.centerIn: parent
        width: 200; height: 200
        color: "green"
    }
}
更新:
还创建了一个C++代码> QQuestItAs/Cuff>模块,用于缩小缩放。

我在QT中遇到了PinchArea。上述实现是否与PinchArea有任何关系?是否可以在MouseArea内部使用MultiPointTouchArea?它是否会与这两个元素的onreleased事件混淆?@Shailendra它与
PinchArea
无关,只取决于
MultiPointTouchArea
,鼠标释放事件也会触发
MultiPointTouchArea
,为什么要将其放入
MouseArea
?要定制夹点缩放,请查看Github上的演示。感谢您的输入。最后,我使用Qt提供的PinchArea来实现上述实现。