import QtQuick 2.0
Item {
id:wheelroot
width: parent.width
height: parent.height
property variant mywheelsource: ["./timg.png"]
Rectangle{
id:imageDisplay;
width:parent.width
height: parent.height
color: "transparent"
Image{
id:img;
width:parent.width;
height:parent.height;
anchors.centerIn: parent;
fillMode: Image.PreserveAspectFit;
source:mywheelsource[0];
}
MouseArea{
anchors.fill: parent
cursorShape:Qt.CrossCursor
onWheel: {
if (wheel.modifiers & Qt.ControlModifier) { //ctrl+滚动
imageDisplay.rotation += wheel.angleDelta.y / 120 * 5;
if (Math.abs(imageDisplay.rotation) < 4)
imageDisplay.rotation = 0;
} else {
imageDisplay.rotation += wheel.angleDelta.x / 120;
if (Math.abs(imageDisplay.rotation) < 0.6)
imageDisplay.rotation = 0;
var scaleBefore = imageDisplay.scale;
imageDisplay.scale += imageDisplay.scale * wheel.angleDelta.y / 120 / 10;
}
}
//////////设置鼠标可移动
property point clickPos: "0,0"
onPressed: { //接收鼠标按下事件
clickPos = Qt.point(mouse.x,mouse.y)
}
onContainsMouseChanged: { //修改一下鼠标样式,以示区别
if (containsMouse) {
cursorShape = Qt.SizeAllCursor;
} else {
cursorShape = Qt.ArrowCursor;
}
}
onPositionChanged: { //鼠标按下后改变位置
//鼠标偏移量
var delta = Qt.point(mouse.x-clickPos.x, mouse.y-clickPos.y)
//Rectangle移动方法
imageDisplay.x=imageDisplay.x+delta.x
imageDisplay.y= imageDisplay.y+delta.y
//如果mainwindow继承自QWidget,用setPos
// imageDisplay.setX(imageDisplay.x+delta.x)
// imageDisplay.setY(imageDisplay.y+delta.y)
}
}
}
}
MouseArea常用的方式
最新推荐文章于 2025-01-04 17:45:35 发布
本文介绍了一个使用Qt Quick实现的交互组件,该组件允许用户通过鼠标滚轮控制图片的旋转角度,并通过滚轮配合Ctrl键实现图片的缩放功能。此外,还实现了鼠标拖动图片的功能。
791

被折叠的 条评论
为什么被折叠?



