2010-02-08 9 views
5

मान लीजिए कि मेरे पास एक QPushButton विजेट है जो उसके क्लिक किए गए() सिग्नल द्वारा स्लॉट से जुड़ा हुआ है। बदले में यह पहला स्लॉट उत्सर्जित कीवर्ड द्वारा एक और स्लॉट कॉल करता है। दूसरा स्लॉट पहले स्लॉट से एक तर्क लेता है और इसके साथ कुछ करता है। यह काम करता है, लेकिन सिग्नल-स्लॉट पैटर्न के बारे में मैं समझता हूं, यह सिग्नल उत्सर्जित करने के लिए केवल समझ में आता है। क्या सिग्नल के बजाय स्लॉट उत्सर्जित करना गलत है?क्यूटी - संकेतों के बजाय उत्सर्जित स्लॉट

उत्तर

8

यदि आप उत्सर्जन की परिभाषा को देखते हैं, तो आप देख सकते हैं कि यह खाली है। उत्सर्जन का उपयोग यह इंगित करने के लिए किया जाता है कि उस रेखा पर एक सिग्नल उत्सर्जित होता है। इसलिए, एक स्लॉट उत्सर्जक समझ में नहीं आता है।

स्लॉट नियमित कार्य होते हैं, आप उन्हें स्पष्ट रूप से कॉल कर सकते हैं।

5

हां। एक स्लॉट एक समारोह है। आप सी ++ doSlotAction(params); में किसी भी अन्य फ़ंक्शन की तरह स्लॉट को कॉल कर सकते हैं। केवल सिग्नल को emit कीवर्ड का पालन करना चाहिए।

+0

यह गलत अर्थ बताता है। उत्सर्जन वास्तव में एक सिग्नल भेजने और एक कनेक्टेड स्लॉट को वापस बुलाए जाने का अर्थ बताता है, जहां _keyword_ emit स्वयं कुछ भी नहीं करता है, यह केवल बेहतर पठनीयता के लिए है। – drahnr

3

बस पिछले उत्तरों को पूरा करने के लिए, संकेतक वास्तव में moc, मेटा-ऑब्जेक्ट कंपाइलर द्वारा कार्यान्वित संरक्षित विधियां हैं।