[Interest] sliding panel windows (was Re: Moving a frameless QQuickWindow to negative position under linux)
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
property real lastMouseX: 0
property real lastMouseY: 0
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