का उपयोग कर रहा है, जो मूल रूप से एक QGroupBoxQCheckBox बटन, जहां उनमें से हर एक बिटमास्क में प्रतिनिधित्व में एक विशेष बिट को नियंत्रित करना चाहिए की एक विन्यास संख्या पकड़े कस्टम विजेट डिजाइनिंग हूँ QBitArray द्वारा।एक ओवरलोड PyQT संकेत कनेक्ट नई शैली वाक्य रचना
def populate(self, num_bits, parent = None):
"""
Adds check boxes to the GroupBox according to the bitmask size
"""
self.bitArray.resize(num_bits)
layout = QHBoxLayout()
for i in range(num_bits):
cb = QCheckBox()
cb.setText(QString.number(i))
self.buttonGroup.addButton(cb, i)
layout.addWidget(cb)
self.setLayout(layout)
फिर, प्रत्येक बार जब कोई उपयोगकर्ता एक चेकबॉक्स पर क्लिक करेंगे self.buttonGroup में निहित: ऐसा करने में, मैं QCheckBox उदाहरणों एक QButtonGroup के लिए, प्रत्येक बटन के साथ एक पूर्णांक आईडी दी जोड़ा , मुझे self.bitArray अधिसूचित किया जाना चाहिए ताकि सरणी में संबंधित बिट को तदनुसार सेट/अनसेट किया जा सके। कि मैं कनेक्ट करने का इरादा QButtonGroup केbuttonClicked (int) संकेत को QBitArray केtoggleBit (int) विधि और, मैं नई शैली संकेत सिंटैक्स का उपयोग करना चाहता था, इसलिए मैं इस कोशिश की, संभव के रूप में pythonic होने के लिए :
self.buttonGroup.buttonClicked.connect(self.bitArray.toggleBit)
समस्या यह है कि buttonClicked एक ओवरलोड संकेत है है, इसलिए वहाँ भी है buttonClicked (QAbstractButton *) हस्ताक्षर।
The debugged program raised the exception unhandled TypeError
"QBitArray.toggleBit(int): argument 1 has unexpected type 'QCheckBox'"
जो स्पष्ट रूप से पता चलता toggleBit विधि प्राप्त buttonClicked (QAbstractButton *)buttonClicked के बजाय संकेत (: वास्तव में, जब कार्यक्रम निष्पादित हो रहा है मैं इस त्रुटि मिलती है जब मैं एक चेक बॉक्स क्लिक करें int) एक। buttonClicked -
तो, सवाल यह है कि मैं, ताकि self.bitArraybuttonClicked (int) डिफ़ॉल्ट अधिभार के बजाय संकेत प्राप्त संकेत कनेक्शन, नई शैली वाक्य रचना का उपयोग कर निर्दिष्ट कर सकते हैं, है (QAbstract बटन *)?
संपादित करें:PyQT's New-style Signal and Slot Support documentation कहा गया है कि कौन सा संकेत आप किसी दिए गए स्लॉट से कनेक्ट करना चाहते निर्दिष्ट करने के लिए pyqtSlot सज्जाकार उपयोग कर सकते हैं, लेकिन यह एक स्लॉट आप बना रहे हैं के लिए है। स्लॉट "तैयार किए गए" वर्ग से कब होता है? क्या यह एकमात्र विकल्प है जो इसे उप-वर्गीकृत करता है और फिर सही सजावट के साथ दिए गए स्लॉट को फिर से कार्यान्वित करता है?