Conexión de una señal PyQT sobrecargada utilizando syntax de nuevo estilo

Estoy diseñando un widget personalizado que es básicamente un QGroupBox que contiene un número configurable de botones QCheckBox , donde cada uno de ellos debe controlar un bit en particular en una máscara de bits representada por un QBitArray . Para hacer eso, agregué las instancias de QCheckBox a un QButtonGroup , con cada botón dado un ID entero:

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) 

Luego, cada vez que un usuario haga clic en una checkbox contenida en self.buttonGroup , me gustaría que se notifique a self.bitArray para que el bit correspondiente en la matriz se pueda configurar / desactivar en consecuencia. Para eso, tenía la intención de conectar la señal de Botón Cliqueado de QButtonGroup (int) al método toggleBit (int) de QBitArray y, para ser lo más python posible, quería usar la syntax de señales de nuevo estilo, así que intenté esto:

 self.buttonGroup.buttonClicked.connect(self.bitArray.toggleBit) 

El problema es que buttonClicked es una señal sobrecargada, por lo que también existe la firma buttonClicked (QAbstractButton *) . De hecho, cuando el progtwig se está ejecutando, aparece este error cuando hago clic en una checkbox:

 The debugged program raised the exception unhandled TypeError "QBitArray.toggleBit(int): argument 1 has unexpected type 'QCheckBox'" 

que muestra claramente que el método toggleBit recibió la señal buttonClicked (QAbstractButton *) en lugar de buttonClicked (int) .

Entonces, la pregunta es, ¿cómo puedo especificar la conexión de la señal, utilizando una syntax de nuevo estilo , para que self.bitArray reciba la señal de clic de botón (int) en lugar de la sobrecarga predeterminada – botón de clic (QAbstractButton *) ?

EDITAR: La documentación de PyQT New-Style Signal and Slot Support indica que puede usar los decoradores pyqtSlot para especificar qué señal desea conectar a una ranura determinada, pero eso es para una ranura que está creando. ¿Qué hacer cuando la ranura es de una clase “lista para usar”? ¿Es la única opción subclasificarla y luego volver a implementar la ranura dada con el decorador adecuado?

Mientras buscaba preguntas relacionadas, encontré que esta respuesta era exactamente lo que necesitaba. La syntax correcta de la señal de nuevo estilo para conectar solo la señal ButtonClicked (int) de QButtonGroup a toggleBit (int) de QBitArray , ignorando las demás firmas sobrecargadas, implica especificar el tipo deseado entre paréntesis, como esto:

 self.buttonGroup.buttonClicked[int].connect(self.bitArray.toggleBit)