我想在我的一个屏幕上设置我的全屏应用,所以我必须设置它的高度,宽度,x,y等。但是我发现动画不起作用。
我曾经想过这是由于我将它设置在一个目标屏幕上,所以我创建了一个测试代码,这里我硬编码x,y,但动画仍然不起作用,有人可以告诉我为什么吗?
我的测试代码如下:
import QtQuick 2.6
import QtQuick.Window 2.2
Window {
visible: true
title: qsTr("Hello World")
flags: Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint
opacity: 0.6
id: root
MouseArea {
anchors.fill: parent
onClicked: {
//Qt.quit();
}
}
Component.onCompleted: {
root.x = 0;
root.y = 0;
root.width = Screen.width;
root.height = Screen.height;
initWindow.start();
}
PropertyAnimation {
id: initWindow
target: root
from: 0
to: Screen.height
duration: 2000
easing.type: Easing.InOutQuad
onRunningChanged: {
if(!initWindow.running && root.visibility != Window.Hidden){
console.log("here is initWindow animation.")
}
}
}
}
答案 0 :(得分:1)
因为你没有动画任何东西。 您需要指定目标。
只是一个疯狂的猜测,但你可能想要为高度设置动画?
Window {
id: root
visible: true
title: qsTr("Hello World")
// opacity: 0.6 // Does not work for me
// I want to have the frames and stuff for an example.
MouseArea {
anchors.fill: parent
onClicked: {
//Qt.quit();
}
}
Component.onCompleted: {
root.x = 0;
root.y = 0;
root.width = 1200;
root.height = 800;
}
Behavior on height { // Starts the Animation with the set target, once the height is set to be changed
NumberAnimation {
id: initWindow
duration: 200000
}
}
}
或者更贴近您的代码:
Window {
id: root
visible: true
title: qsTr("Hello World")
MouseArea {
anchors.fill: parent
onClicked: {
Qt.quit();
}
}
Component.onCompleted: {
root.x = 0;
root.y = 0;
root.width = Screen.width;
initWindow.start();
}
PropertyAnimation {
id: initWindow
target: root
from: 0
to: Screen.height
property: 'height' // You need to declare which property should change.
duration: 2000
easing.type: Easing.InOutQuad
}
}
请参阅评论,了解我的所作所为。 我为你的代码添加了一些不必要的代码。