मैं इस पर घंटों तक काम कर रहा हूं और इसे समझ नहीं सकता और न ही मुझे काम करने वाली कोई मदद मिल सकती है। मूल रूप से जो मैं पूरा करने की कोशिश कर रहा हूं उसका सारांश एक बटन और QTextBrowser के साथ एक क्यूटी जीयूआई होना है। जब मैं बटन दबाता हूं तो मैं इसे एक संदेश डायल करना चाहता हूं और फिर हर 10 सेकंड में इस संदेश को प्रिंट करना जारी रखता हूं।क्यूटी: QTextBrowser को प्रत्येक 10 सेकंड में एक संदेश मुद्रित करने के लिए QTimer का उपयोग कैसे करें?
मुझे लगा कि मैं क्यूटीमर का उपयोग करूंगा क्योंकि यह हर 10 सेकंड में संदेश को डायल करने के लिए टाइमर रखना समझ में आता है। जब मैंने मूल रूप से इसे अपने बटनक्लिक() एसएलओटी में लागू किया, तो इसने प्रोग्राम को फ्रीज कर दिया। मैंने एक समाधान के लिए ऑनलाइन देखा और QAplication :: processEvents() पाया।
तो मेरी समारोह में मूल रूप से मैं कुछ इस तरह था:
while(1)
{
QTimer *timer;
connect(...) //omitted parameters for this example
timer.start(10000);
ui->diplay->append("Message");
while(timer.isActive())
{
QApplication::processEvents()
}
}
मैं लगा यह timer.isActive() से बाहर है, जबकि पाश टूट जाएगा लेकिन ऐसा नहीं यह बस वहाँ में रहता होगा।
तो मुझे लगा कि यह एक थ्रेडिंग मुद्दा है। तो मुझे पता चला कि QThreads का उपयोग कैसे करें लेकिन मैं अभी भी इसे काम नहीं कर सकता। असल में जब मैं उस पर एक टाइमर के साथ धागा बना देता हूं और थ्रेड टाइमर को शुरू करने के लिए कहता है, प्रोग्राम बंद हो जाता है और कंसोल कहता है "कार्यक्रम अप्रत्याशित रूप से समाप्त हो गया है"।
ऐसा करने के लिए एक आसान तरीका हो गया है लेकिन क्यूटी के साथ अपने ट्रैक रिकॉर्ड हमेशा
अद्यतन: मैं अब का उपयोग कर रहा timer-> singleShot (टाइमर, संकेत (टाइमआउट()), इस, स्लॉट (अद्यतन())) ; लेकिन मुझे संदेश मुद्रित करने के लिए कार्यक्रम की आवश्यकता है और प्रसंस्करण जारी रखने से पहले 10 सेकंड प्रतीक्षा करें। मेरे पास थोड़ी देर में लूप है इसलिए यह लगातार हर 10 सेकंड में सिंगलशॉट कर रहा है। कोई सुझाव? धन्यवाद! –
क्या लगभग हर कोई इस तथ्य को याद कर रहा है कि यह थोड़ी देर में हो रहा है (1) लूप? कोई आश्चर्य नहीं कि कार्यक्रम ठंडा है। –