Qt 用于鼠标选择的具有负宽度的QML矩形
我正在尝试制作一个鼠标选择矩形 但是Qt 用于鼠标选择的具有负宽度的QML矩形,qt,qml,Qt,Qml,我正在尝试制作一个鼠标选择矩形 但是矩形{}对象不能有负的宽度和高度值 因此,它只选择从左到右和从上到下的: Rectangle { id: selectorRectangle x: 0 y: 0 width: 0 height: 0 color: "#8000abcd" border.color: "#00fbfb" } MouseArea { anchors.fill: parent propagateCompose
矩形{}
对象不能有负的宽度和高度值
因此,它只选择从左到右和从上到下的:
Rectangle {
id: selectorRectangle
x: 0
y: 0
width: 0
height: 0
color: "#8000abcd"
border.color: "#00fbfb"
}
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
onPressed: {
selectorRectangle.x = mouse.x
selectorRectangle.y = mouse.y
}
onPositionChanged: {
selectorRectangle.width = mouse.x - selectorRectangle.x
selectorRectangle.height = mouse.y - selectorRectangle.y
}
}
我怎样才能做到呢
谢谢 这是我的实现。您只需要将按下的点保留在属性中,并相应地计算x、y、width和height,以保持width和height为正
Rectangle {
id: selectorRectangle
x: 0
y: 0
width: 0
height: 0
color: "#8000abcd"
border.color: "#00fbfb"
}
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
property var lastPressPoint: Qt.point(0,0)
onPressed: {
lastPressPoint.x = mouse.x;
lastPressPoint.y = mouse.y;
}
onPositionChanged: {
selectorRectangle.x = Math.min(lastPressPoint.x , mouse.x)
selectorRectangle.y = Math.min(lastPressPoint.y , mouse.y)
selectorRectangle.width = Math.abs(lastPressPoint.x - mouse.x);
selectorRectangle.height = Math.abs(lastPressPoint.y - mouse.y);
}
onReleased: {
selectorRectangle.x = 0;
selectorRectangle.y = 0;
selectorRectangle.width = 0;
selectorRectangle.height = 0;
}
}