如何在QML中延迟JavaScript操作?

Ben*_*oit 8 javascript c++ qt qml qt-quick

我正在构建一个基于QMLC++应用程序.

简单来说:

在我的主要QML文件中,我有一个按钮(Rectangle)在单击时调用JavaScript函数(在外部JS文件中定义):

// My JS file linked to the main QML window
[...]
function actionOnButtonClicked()
{
    var x = 0;
    var y = 0;
    for(var i = 0; i < 3; i++)
    {
        createObject(x, y);
        x = x + 10;
        y = y + 10;
    } 
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,在这个函数中,我调用n(= 3 here)和另一个JS函数来动态创建几个 QML对象以添加到场景中:

function createObject(xPosition, yPosition)
{
    component = Qt.createComponent("Symbol.qml");
    component.createObject(windowApp, {"x": xPosition, "y": yPosition});
}
Run Code Online (Sandbox Code Playgroud)

这工作正常.但是创建的对象(Symbol)出现在带有翻译动画的windowApp中(大约1秒钟),我想在创建第二个对象之前等待第一个对象的动画完成...

由于我们不能在QML中使用setTimeOut() JavaScript函数,我想知道如何实现这一点.我看不出如何使用QML Timer对象甚至是PauseAnimation ......

有人知道如何在2个QML JavaScript操作之间添加延迟吗?

小智 0

您可能可以这样做,以便仅从按钮操作创建一个“符号”,并在新对象中的某些事件上触发新符号。也许动画结束会触发一个您可以使用的事件?