2009-06-10 15 views
13

में जीयूआई थ्रेड का पता लगाने के लिए मुझे यह पता होना चाहिए कि मेरा फ़ंक्शन कौन सा थ्रेड चल रहा है, यह मुख्य जीयूआई थ्रेड या कुछ कार्यकर्ता धागा है।क्यूटी लाइब्रेरी

मैं मुख्य फ़ंक्शन में QThread सूचक को स्टोर करने के लिए एक सरल समाधान का उपयोग नहीं कर सकता और इसे QThread :: currentThread() से तुलना करता हूं क्योंकि मैं लाइब्रेरी लिख रहा हूं और मेरे पास मुख्य फ़ंक्शन तक पहुंच नहीं है। मैं निश्चित रूप से InitMyLibary() फ़ंक्शन बना सकता हूं और इसे GUI थ्रेड के संदर्भ में कॉल करने के लिए लाइब्रेरी उपयोगकर्ता की आवश्यकता है लेकिन मैं वास्तव में इसके विरुद्ध हूं।

उत्तर

23

यदि आपके पास lib में Qt है तो आप एप्लिकेशन ऑब्जेक्ट के थ्रेड के लिए पूछ सकते हैं। आवेदन वस्तु मुख्य गुई धागे में हमेशा रहती है।

void fooWorker() 
{ 
    const bool isGuiThread = 
     QThread::currentThread() == QCoreApplication::instance()->thread(); 

} 
+5

सही: क्यूकोर आवेदन :: उदाहरण() -> धागा()। मैं उदाहरण के लिए भी जांच करूंगा() == 0। –