[Interest] MouseArea failed to handle onPositionChanged to a frameless ApplicationWindow in Qt 5.2.1
Leslie Zhai
xiangzhai83 at gmail.com
Wed May 7 08:52:22 CEST 2014
Hi Rutledge,
Thanks for your reply :)
It is might be the WINDOW MANAGER issue, for example, KWin (the KDE`s)
is not able to handle QML frameless Window correctly, when you drag the
window title over the borders (for example, over the top of screen)
Regards,
Leslie Zhai <xiang.zhai at i-soft.com.cn>
> On 7 May 2014, at 4:50 AM, Leslie Zhai wrote:
>
>> Hi qt developers,
>>
>> I use MouseArea to act like DragArea to move the frameless
>> ApplicationWindow in Qt5.2.1
>> https://github.com/AOSC-Dev/QJade/blob/master/qml/DragArea.qml#L17
>>
>> But Window Cannot Be Moved Over the Borders the Screen
>> https://github.com/AOSC-Dev/QJade/issues/5
>>
>> Please someone show me how to fix it, thanks a lot!
> I was testing that a couple of years ago, as follows:
>
> import QtQuick 2.1
> import QtQuick.Window 2.0
>
> Window {
> id: window
> visible: true
> width: 100
> height: 100
> flags: Qt.FramelessWindowHint
>
> Rectangle {
> color: "steelblue"
> anchors.top: parent.top
> width: parent.width
> height: 20
> MouseArea {
> anchors.fill: parent
> property real lastMouseX: 0
> property real lastMouseY: 0
> onPressed: {
> lastMouseX = mouseX
> lastMouseY = mouseY
> }
> onMouseXChanged: window.x += (mouseX - lastMouseX)
> onMouseYChanged: window.y += (mouseY - lastMouseY)
> }
> }
> }
>
> I can drag this across both monitors on a dual-head system, either OSX or Linux; and if I wrap your code into a standalone test, it also works:
>
> import QtQuick 2.2
> import QtQuick.Window 2.1
>
> Window {
> id: rootWindow
> visible: true
> width: 100
> height: 100
> MouseArea {
> cursorShape: Qt.ArrowCursor
> anchors.fill: parent
>
> property variant clickPos: "1, 1"
>
> onPressed: {
> cursorShape = Qt.SizeAllCursor
> clickPos = Qt.point(mouse.x, mouse.y)
> }
>
> onPositionChanged: {
> var delta = Qt.point(mouse.x - clickPos.x, mouse.y - clickPos.y)
> rootWindow.x += delta.x
> rootWindow.y += delta.y
> }
>
> onExited: cursorShape = Qt.ArrowCursor
> }
> }
>
More information about the Interest
mailing list