我有一个可拖动的Item
MouseArea
,Item
的{{1}}和x
属性在y
信号内被更改onReleased
的处理程序。
MouseArea
问题是,在重新定位项目之前调用信号处理程序(因为它的x和y属性发生了变化),这导致GUI看起来被冻结,直到信号处理程序返回,之后item被重新定位到正确的位置。
如何在重新绘制项目之后推迟执行信号处理程序?
答案 0 :(得分:1)
我用谷歌搜索了qml force redraw',但没有找到任何帮助。添加计时器可以走路。
import QtQuick 2.0
Rectangle {
width: 640; height: 480
Rectangle {
id: item
x: 10; Behavior on x {NumberAnimation{}}
y: 10; Behavior on y {NumberAnimation{}}
width: 100; height: width
color: "red"
signal someSignal
MouseArea {
anchors.fill: parent
onReleased: {
/* change x and y properties of item */
item.x = 100
item.y = 100
/* emit signal to do further event handling */
// item.someSignal()
timer.start()
}
drag.target: parent
}
Timer {
id: timer
onTriggered: item.someSignal();
}
onSomeSignal: {
var a = 0
for (var i=0; i<999999999; i++)
a ++
console.log("done")
}
}
}