[Interest] sliding panel windows (was Re: Moving a frameless QQuickWindow to negative position under linux)

Rutledge Shawn Shawn.Rutledge at digia.com
Wed Aug 13 16:09:14 CEST 2014


On 13 Aug 2014, at 3:04 PM, hualet wrote:

> Thanks for you reply, Shawn. 
> I’m not trying to get the sliding-panel effect, in fact, my window is just the main window of a regular video player,
> what I want is the window can be dragged like other windows, now it works pretty fine so far except that when I dragged it to the top left corner of the screen and wanna go on it just was stuck there, sorry for my poor English, can you understand me ?

So it has no title bar but you need the behavior that is usually achieved by dragging the titlebar?

One of my experiments is this

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)
        }
    }
}

(run with the qml tool)

It works better on some OSes and window managers than others.

Now it has been explained on the Wayland thread that interactive dragging is a different protocol on both Wayland and X11 (http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#idm140146176808576 for X11).  But I'm not aware of a way to programmatically initiate interactive dragging in Qt; but this use case might benefit from one.  There is private API QPlatformWindow::startSystemResize() which so far seems to be used only in QSizeGrip.

At least many X11 window managers allow you to alt-drag any window (hold down the alt key and drag any window from any point inside).


More information about the Interest mailing list