Qt 在鼠标单击QML时重复状态
在代码中,我定义了一个Qt 在鼠标单击QML时重复状态,qt,qml,qtquick2,Qt,Qml,Qtquick2,在代码中,我定义了一个状态、一个转换和一个旋转动作 属性更改发生后,即旋转设置为360后,onClicked处理程序将变为静音,并且在随后的MouseArea单击后,将不再播放动画 这是我目前的代码: Image{ id: logo x: 29 source: "LSFO-IngeniiSymbol.png" width: 70 height: 70 states: State { name: "rotated" ; when: a
状态
、一个转换
和一个旋转动作
属性更改发生后,即旋转
设置为360
后,onClicked
处理程序将变为静音,并且在随后的MouseArea
单击后,将不再播放动画
这是我目前的代码:
Image{
id: logo
x: 29
source: "LSFO-IngeniiSymbol.png"
width: 70
height: 70
states: State {
name: "rotated" ; when: area.pressed
PropertyChanges {target: logo; rotation: 360 }
}
transitions: Transition {
RotationAnimation {
id: rotateanimate
duration: 1000
direction: RotationAnimation.Clockwise
}
}
MouseArea {
id: area
anchors.fill: parent
onClicked: {
logo.state = "rotated"
// pageloader.source = "HelpDoc.qml"
// pageloader.source = ""
// pageloader.source = "HelpDoc.qml"
}
}
}
State
s是表示给定项的不同属性配置的一种方式。每个状态
都有其在特定项
中定义的属性的唯一值集
Transition
s是一种在当前状态更改为另一状态时向项目添加动画的方法。它们可以以“受限方式”应用,即仅当项
从一个特定的状态
更改为另一个状态时(请参见和属性),或者它们可以“全局”应用于每个状态
更改。在任何情况下都需要改变
在您的代码中,状态
设置为旋转
,然后重新分配相同的状态
,以便不再发生任何更改。因此,没有空间进行另一次转换
,或者转换到旋转
状态
,或者转换到名为状态的默认空状态
无论如何,应用动画有多种方法,包括但不限于、Transition
s和。在我看来,后者是解决这一具体案件的方法。以下是重新访问的代码版本,其中的动画在鼠标单击时触发:
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Layouts 1.1
ApplicationWindow {
width: 250
height: 250
visible: true
Image{
id: logo
anchors.centerIn: parent
source: "https://yt3.ggpht.com/-YiF6y9OXDQ8/AAAAAAAAAAI/AAAAAAAAAAA/oFNmJLmzqDA/s100-c-k-no/photo.jpg"
width: 100
height: 100
RotationAnimation {
id: rotate
target:logo
property: "rotation"
from: 0
to: 360
duration: 1000
direction: RotationAnimation.Clockwise
}
MouseArea {
id: area
anchors.fill: parent
onClicked: {
rotate.start() // animation plays here!
// your code
}
}
}
}
你解决了我的问题,谢谢。我是从QT自己的例子出发的,所以这让我有点误入歧途。谢谢你的知识