javascript - 如何在 QML 中延迟 JavaScript Action ?

标签 javascript c++ qt qml qt-quick

我正在构建一个基于 QML 的 C++ 应用程序

为了简单起见:

在我的主 QML 文件中,我有一个按钮(矩形)在单击时调用 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;
    } 
}

如您所见,在这个函数中,我调用了 n(这里 = 3)次另一个 JS 函数来动态创建几个 QML 对象以添加到场景中:

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

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

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

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

最佳答案

我觉得这个QML Timer type可以帮助您实现您想要的。

import QtQuick 2.0
Item {
       Timer {
               interval: 500; running: true; repeat: true
               onTriggered: time.text = Date().toString()
             }

       Text { id: time }
} 

关于javascript - 如何在 QML 中延迟 JavaScript Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432955/

相关文章:

c++ - 使用 C++ 和 STL 的 vector 元素乘积

c++ - 如何在循环移位后从给定字符串中找到一组不同的字符串?

c++ - 需要对#pragma once 做一些澄清

c++ - 是否可以在 OS X 上重新设置 QProgressBar 的样式?

qt - 动态更改 QPropertyAnimation 持续时间

javascript - 基于 JavaScript 的客户端的 3xx 响应的 RESTful 替代方案

javascript - 奇怪的 Javascript For 循环行为

c++ - QGraphicsWidget 的上下文菜单事件

javascript - Angular 2 使用指令防止输入和模型更改

javascript - 如何在 JQuery 中使用正则表达式(字段 $)将整数添加到字符串变量?