x 上的 PropertyAnimation 改变 y 值
PropertyAnimation on x changes y value
考虑以下 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
}
}
它应该创建应用程序的主要 window 并显示它从屏幕右侧移出,很像 Windows 8 右侧面板出现在鼠标悬停时。
然而,当我运行这段代码时,window没有附加到屏幕的顶部,即window的y值不是0。
出于调试目的,我添加了 Text 对象:如果我注释掉 PropertyAnimation 块,则会显示 52,并且 window 会固定在屏幕顶部。如果我取消注释 PropertyAnimation 块,将显示 62 并且 window 和屏幕顶部之间有一个 space。
尽管 y 值发生了违反直觉的变化,但动画正常工作。
我试过在动画完成后设置 y: 0 或在 y 上添加 PropertyAnimation 从 0 到 0,但这并没有解决问题。对我来说,它看起来像是 Qt QML 中的一个错误。
这个问题有解决办法吗?
我找到了解决该问题的方法。
在根 ApplicationWindow 上设置
flags: Qt.BypassWindowManagerHint
或
flags: Qt.X11BypassWindowManagerHint
帮我解决了这个问题。请注意,该问题是在 Ubuntu 16.04 上重现的,我曾尝试在 Windows 上重现它,但没有成功。
我建议同时使用这两个标志:
flags: Qt.BypassWindowManagerHint | Qt.X11BypassWindowManagerHint
这是 flag 文档的 link:http://doc.qt.io/qt-5/qt.html#WindowType-enum
考虑以下 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
}
}
它应该创建应用程序的主要 window 并显示它从屏幕右侧移出,很像 Windows 8 右侧面板出现在鼠标悬停时。
然而,当我运行这段代码时,window没有附加到屏幕的顶部,即window的y值不是0。
出于调试目的,我添加了 Text 对象:如果我注释掉 PropertyAnimation 块,则会显示 52,并且 window 会固定在屏幕顶部。如果我取消注释 PropertyAnimation 块,将显示 62 并且 window 和屏幕顶部之间有一个 space。
尽管 y 值发生了违反直觉的变化,但动画正常工作。
我试过在动画完成后设置 y: 0 或在 y 上添加 PropertyAnimation 从 0 到 0,但这并没有解决问题。对我来说,它看起来像是 Qt QML 中的一个错误。
这个问题有解决办法吗?
我找到了解决该问题的方法。
在根 ApplicationWindow 上设置
flags: Qt.BypassWindowManagerHint
或
flags: Qt.X11BypassWindowManagerHint
帮我解决了这个问题。请注意,该问题是在 Ubuntu 16.04 上重现的,我曾尝试在 Windows 上重现它,但没有成功。
我建议同时使用这两个标志:
flags: Qt.BypassWindowManagerHint | Qt.X11BypassWindowManagerHint
这是 flag 文档的 link:http://doc.qt.io/qt-5/qt.html#WindowType-enum