Tôi đang xây dựng một ứng dụng C++ dựa trên QML.Làm thế nào để trì hoãn hành động JavaScript trong QML?
Để làm cho nó đơn giản:
Trong file QML chính của tôi, tôi có một nút (Rectangle) gọi một hàm JavaScript (được định nghĩa trong một tập tin JS bên ngoài) khi nhấp:
// 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;
}
}
Như bạn có thể thấy, trong hàm này, tôi gọi n (= 3 đây) lần khác chức năng JS để tự động tạo nhiều QML đối tượng để thêm vào cảnh:
function createObject(xPosition, yPosition)
{
component = Qt.createComponent("Symbol.qml");
component.createObject(windowApp, {"x": xPosition, "y": yPosition});
}
Điều này hoạt động tốt. Nhưng đối tượng được tạo (Biểu tượng) xuất hiện trong cửa sổỨng dụng với hoạt ảnh dịch (khoảng 1 giây) và tôi muốn đợi hoạt ảnh của đối tượng đầu tiên hoàn thành trước khi tạo hình ảnh thứ hai ...
Như chúng tôi không thể sử dụng hàm setTimeOut() JavaScript trong QML, tôi tự hỏi làm thế nào tôi có thể đạt được điều này. Tôi không thấy cách tôi có thể sử dụng đối tượng Hẹn giờ QML hoặc thậm chí là PauseAnimation ...
Có ai biết cách thêm độ trễ giữa 2 hoạt động JavaScript QML không?
Xin chào, cảm ơn bạn đã trợ giúp. thực sự tôi có thể đợi cho hoạt ảnh hoàn tất bằng cách chèn một [scriptAction] (http://doc-snapshot.qt-project.org/4.8/qml-scriptaction.html) vào cuối. Tuy nhiên, hàm tôi muốn gọi sau khi một Biểu tượng đã được tạo có thể khác nhau trong suốt quá trình chạy chương trình và điều đó sẽ phá vỡ các bước ban đầu của tôi (được thực hiện trong hàm _actionOnButtonClicked() _). Lưu ý trong mẫu mã của tôi, tôi đã cố ý sử dụng một _for_ để tạo ra một số đối tượng trong hàm đó cho mục đích đơn giản hóa, nhưng hàm này thực sự thực hiện một số thao tác giữa các đối tượng tạo khác nhau ... – Benoit