x上的PropertyAnimation更改y值

时间:2016-11-02 18:24:27

标签: qt qml qtquick2

考虑以下Qt QML代码:

import QtQuick 2.7
import QtQuick.Window 2.2
import QtQuick.Controls 2.0

ApplicationWindow {
    id: mainWindow
    visible: true
    width: Screen.width / 5
    height: Screen.height

    x: 0
    y: 0

    PropertyAnimation on x {
        duration: 1000
        from: Screen.width
        to: Screen.width - mainWindow.width
    }

    Text {
        text: mainWindow.y
    }
}

它应该创建应用程序的主窗口并显示它从屏幕右侧移出,就像鼠标悬停时出现的Windows 8右侧面板一样。

但是,当我运行此代码时,窗口没有附加到屏幕顶部,即窗口的y值不为0.

我已添加Text对象以进行调试:如果我注释掉PropertyAnimation块,则会显示52并且窗口会粘到屏幕顶部。如果我取消注释PropertyAnimation块,则会显示62,并且窗口和屏幕顶部之间有一个空格。

尽管y值发生了违反直觉的变化,但动画仍能正常运作。

我试图在动画完成后设置y:0或在y上从0添加PropertyAnimation,但这还没有解决问题。对我来说,它看起来像是Qt QML中的一个错误。

此问题是否有解决方法?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。

在根ApplicationWindow上设置

flags: Qt.BypassWindowManagerHint

flags: Qt.X11BypassWindowManagerHint

为我解决了这个问题。请注意,该问题已在Ubuntu 16.04上重现,我试图在Windows上重现它而没有运气。

我建议使用两个标志:

flags: Qt.BypassWindowManagerHint | Qt.X11BypassWindowManagerHint

以下是该国旗文件的链接:http://doc.qt.io/qt-5/qt.html#WindowType-enum