मैंने एक क्यूटी-आधारित नेटवर्क लाइब्रेरी बनाई है जो कि क्यूटी इवेंट लूप नहीं चला रहे हैं, और जो अन्यथा क्यूटी अनुप्रयोग नहीं हैं। यह Is it possible to create local event loops without calling QApplication::exec()?चेतावनी दबाएं "QAplplication मुख्य() थ्रेड में नहीं बनाया गया था"
यह पूरी तरह से काम करता है से प्रति जवाब एक सूत्र में एक QCoreApplication
उदाहरण बनाकर संभव बनाया गया है, लेकिन यह क्यूटी परेशान (मुझे लगता है यह चिंता है कि मैं मुख्य थ्रेड के बाहर एक जीयूआई में हेरफेर करने की कोशिश करेंगे बनाता है काम नहीं करेगा, लेकिन मैं नहीं हूं), और इसलिए यह एक चेतावनी प्रिंट करता है: WARNING: QApplication was not created in main() thread
।
मैं उस चेतावनी को दबाना चाहता हूं जो अन्यथा एक्स 11 कंसोल पर मुद्रित होगा और अधिकतर मेरे उपयोगकर्ताओं को अनावश्यक कमियों का एक गुच्छा दर्ज करने का कारण बनता है। हालांकि, मैं केवल को त्रुटि का समाधान करना चाहता हूं, क्योंकि मैं कुछ वैध उद्देश्यों के लिए qDebug
का उपयोग करता हूं और भविष्य की चेतावनियां देखना चाहता हूं। ऐसा करने का कोई तरीका है, जैसे किसी प्रकार का क्यूटी #pragma
?
संपादित करें:
ऐसा ही एक सवाल यहाँ से पहले कहा गया था: Qt console application "WARNING: QApplication was not created in the main() thread", लेकिन इस सवाल का जवाब चेतावनी को दबाने के लिए किसी भी सार्थक विचारों के बिना सिर्फ एक कोड की समीक्षा मूल रूप से किया गया था।
मुझे लगता है कि समस्या उत्पन्न होती है क्योंकि आप QApplication बनाने से पहले क्यूटी एपीआई (मुख्य धागे में, या केवल * कुछ * धागे में) को छू रहे हैं। आप ऐसा नहीं कर सकते (मॉड्यूल सामग्री जो QAplication से पहले की जानी चाहिए)। विशेष रूप से, आप QObjects बना रहे हैं। – peppe
हम्म, जो एक दिलचस्प चिकन-अंडे की समस्या पैदा करता है, क्योंकि कक्षा जिसे मैं 'क्यूकोर एप्प्लिकेशन' थ्रेड बनाने के लिए उपयोग करता हूं वह स्वयं ही 'क्यूओब्जेक्ट' है क्योंकि इसे बाल धागे में सॉकेट के साथ संवाद करने के लिए सिग्नल का उपयोग करने की आवश्यकता होती है। –
ठीक है, बस इसे विभाजित करें? उस कक्षा को तर्क के साथ रखें, और एक और वर्ग बनाएं जो QCoreAplication और आपकी कक्षा का ऑब्जेक्ट बनाता है। – peppe