Qt 我们如何在QML中实现图像列表的收缩放大?
我正在使用基于Listview的QML实现一个Imageviewer,Listview的代理是图像。需要注意的是,图像显示在整个屏幕上。我需要包括功能捏缩放,这将有助于在图像缩放。请推荐任何好的源代码或如何继续示例。我创建了一个用于收缩缩放的演示,将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
矩形缩放两个接触点
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来实现上述实现。