qt - How to make time gap or delay between two parts of code meanwhile program continue? C++ -


मेरे पास निम्न कोड है:

  यदि (टक्कर == 1) {चित्रकार- & gt; setBrush (Qcolor (क्यूटी :: लाल)); painter- & gt; setPen (Qcolor (क्यूटी :: काला)); चित्रकार- & gt; ड्रॉ एक्लीपस (क्यूपॉइंट (बाउंडिंगराइट)। X () + (बाउंडिंगराइट ()। चौड़ाई () / 1.7), बाउंडिंगराइट ()। Y () + (बाउंडिंगराइट ()। चौड़ाई () / 2.1)), बाउंडिंगराइट ()। वाइड () / 5, बाउंडिंगराइट ()। ऊँचाई () / 10); / * वहाँ समय के लिए बंद हो जाओ और फिर * / टकराव = 0; }  

मैं इस कोड को लाल अंडाकार रंगाने के लिए उपयोग करना चाहता हूं, लेकिन केवल कुछ सेकंड (टकराव के बाद) के लिए। इसलिए मुझे इस कोड के दो हिस्सों के बीच समय अंतर या देरी करना पड़ता है। यहां समस्या यह है कि मुझे यह नहीं पता कि कैसे करना है।

मैंने सो (नींद) की कोशिश की या प्रतीक्षा करें () या:

  QTime dieTime = QTime :: currentTime ( ) .addSecs (1); जबकि (QTime :: currentTime () & lt; dieTime) QCoreApplication :: processEvents (QEventLoop :: AllEvents, 100);  

लेकिन ये रोक या पूरे कार्यक्रम को रोकें मैं बस किसी भी विचार "टक्कर = 0" के निष्पादन में देरी करना चाहता हूं?

सो () या wait () अपने सभी जीयूआई थ्रेड को रोकें, इसलिए यह फ्रीज हो जाता है। एकल शॉट से QTimer उपयोग करने का प्रयास करें। उदाहरण के लिए:

  QTimer :: एकल शॉट (4000, यह, स्लॉट (mySlot ()));  

में mySlot आप सभी आवश्यक सामान कर सकते हैं इस मामले में सिंगल शॉट आपका GUI फ़्रीज़ नहीं करेगा। उदाहरण के लिए, टकराने के लिए शून्य और कॉल अपडेट सेट करें, यह paintEvent को कॉल करेगा और इस में paintEvent शून्य टकराव के साथ आपका अंडाकार दोबारा खींचा नहीं जाएगा।


Comments