जैसा कि आपके प्रश्न पर टिप्पणियों में सुझाव दिया गया है, Timer घटक इसका एक अच्छा समाधान है।
function Timer() {
return Qt.createQmlObject("import QtQuick 2.0; Timer {}", root);
}
timer = new Timer();
timer.interval = 1000;
timer.repeat = true;
timer.triggered.connect(function() {
print("I'm triggered once every second");
})
timer.start();
उपरोक्त होगा कि मैं वर्तमान में इसका उपयोग कैसे कर रहा हूं, और यहां बताया गया है कि मैंने आपके प्रश्न में उदाहरण कैसे लागू किया होगा।
function delay(delayTime) {
timer = new Timer();
timer.interval = delayTime;
timer.repeat = false;
timer.start();
}
(कौन सा कुछ भी नहीं करता है, पर पढ़ें)
हालांकि सटीक तरह से आप देख रहे हैं यह लागू किया जाना के लिए पता चलता है कि आप की अगली पंक्ति तक ब्लॉक करने के लिए इसे देख रहे आपका प्रोग्राम निष्पादित करता है। लेकिन यह इसके बारे में जाने का एक बहुत अच्छा तरीका नहीं है क्योंकि यह आपके प्रोग्राम में अन्य सभी को अवरुद्ध करेगा क्योंकि जावास्क्रिप्ट केवल निष्पादन के एक थ्रेड में चलता है।
कॉलबैक पास करने का एक विकल्प है।
function delay(delayTime, cb) {
timer = new Timer();
timer.interval = delayTime;
timer.repeat = false;
timer.triggered.connect(cb);
timer.start();
}
जो आपको इसका उपयोग करने की अनुमति देगा।
delay(1000, function() {
print("I am called one second after I was started.");
});
उम्मीद है कि यह मदद करता है!
संपादित करें: उपरोक्त मानते हैं कि आप एक अलग जावास्क्रिप्ट फ़ाइल में काम कर रहे हैं जिसे बाद में आप अपनी क्यूएमएल फ़ाइल में आयात करते हैं। एक क्यूएमएल फ़ाइल में समकक्ष करने के लिए, आप यह कर सकते हैं।
import QtQuick 2.0
Rectangle {
width: 800
height: 600
color: "brown"
Timer {
id: timer
}
function delay(delayTime, cb) {
timer.interval = delayTime;
timer.repeat = false;
timer.triggered.connect(cb);
timer.start();
}
Rectangle {
id: rectangle
color: "yellow"
anchors.fill: parent
anchors.margins: 100
opacity: 0
Behavior on opacity {
NumberAnimation {
duration: 500
}
}
}
Component.onCompleted: {
print("I'm printed right away..")
delay(1000, function() {
print("And I'm printed after 1 second!")
rectangle.opacity = 1
})
}
}
मुझे विश्वास नहीं है कि यह आपकी वास्तविक समस्या का समाधान है; एनीमेशन में देरी करने के लिए, आप PauseAnimation का उपयोग कर सकते हैं।
बस एक टाइमर तत्व का उपयोग करें: http://doc.qt.io/qt-5/qtimer.html – MrEricSir
विकल्प यहाँ टिप्पणी में कर रहे हैं। उन लोगों के अलावा, एनीमेशन ढांचा काफी समृद्ध है और एनिमेशन को नियंत्रित करने के कई तरीकों को प्रदान करता है। दस्तावेज़ों में खोदें या अपनी एनीमेशन जरूरतों को हल करने के लिए एक प्रश्न पोस्ट करें (संपादित करें)। – BaCaRoZzo
डाउन वोट क्यों? मुझे लगता है कि यह एक पूरी तरह से वैध सवाल है। –