स्लॉट्स को सिग्नल कनेक्ट करने के लिए, जहां तक मुझे पता है, सिग्नल के पैरामीटर स्लॉट के पैरामीटर से मेल खाने की आवश्यकता है। उदाहरण के लिए:निरंतर मानों के साथ स्लॉट पर सिग्नल कनेक्ट करें
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(closeDockWidget()));
लेकिन क्या होगा अगर मैं एक संकेत कॉल एक स्लॉट मानकों का एक अलग राशि है कि करने के लिए है, लेकिन हमेशा स्लॉट में एक निरंतर मूल्य पारित करना चाहते हैं।
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(setDockWidget(false)));
या दूसरे शब्दों में, जब भी बटन दबाया जाता है, यह गलत पैरामीटर के साथ setDockWidget()
फ़ंक्शन को कॉल: उदाहरण के लिए, कोड की ऊपर टुकड़ा का उपयोग कर। क्या यह संभव है?
यह उत्तर अब वास्तव में मान्य नहीं है, क्योंकि C++ 11 पर Qt5 वाक्यविन्यास इस उद्देश्य के लिए लैम्ब्डा का उपयोग करना काफी आसान बनाता है। –
@ एंड्रे, दूसरी तरफ, आप सिर्फ 'प्रॉक्सी स्लॉट बना सकते हैं, जो वांछित कॉल करेगा।' अब – Lol4t0
जगह पर, आप कर सकते हैं। लेकिन एक अतिरिक्त स्लॉट का अर्थ है अपने हेडर में अधिक सामान जो आप नहीं चाहते हैं, बाहरी कॉलों को उजागर करना (हाँ, भले ही निजी स्लॉट को बाहर से बुलाया जा सके) और कई स्थानों पर अपने कोड को फैलाएं। आपको उन मूल्यों को शामिल करने के लिए अतिरिक्त सदस्य चर की भी आवश्यकता हो सकती है, जिन्हें आप पास करना चाहते हैं, इस प्रकार आपकी कक्षा में अतिरिक्त स्थिति शुरू कर रहे हैं। लैम्ब्डा समाधान इतना अधिक सुरुचिपूर्ण है कि यह एक समाधान आईएमओ के रूप में प्रॉक्सी स्लॉट की शुरूआत को अयोग्य घोषित करता है। –