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常用的方式
最新推荐文章于 2024-03-15 23:47:27 发布