¿Cómo puedo conectar la señal presionada () de 32 botones a una sola función sin declarar 32 ranuras?

StackOverflow https://stackoverflow.com/questions/1801167

  •  05-07-2019
  •  | 
  •  

Pregunta

Tengo un widget y dentro hay 32 botones. Necesito conectar la señal presionada () de cada botón a una ranura para llamar a una función cuyos parámetros dependen de qué botón presioné. Ahora mismo lo hice agregando 32 ranuras en forma de on_QPushButtonName_pressed () Pero eso es un montón de ranuras. Me preguntaba si hay otra forma de hacerlo que sea más pequeña. He hecho algo similar, pero estaba trabajando con widgets personalizados, así que solo pude crear una nueva señal en el código de mi clase, pero me gustaría evitar crear un widget personalizado para un solo botón.

¿Fue útil?

Solución

Utilice la clase QSignalMapper. La documentación: http://doc.qt.io/qt-5/qsignalmapper.html : tiene un ejemplo bastante cercano a lo que quieres.

Otros consejos

Otra posibilidad: crear solo una ranura, llamar a sender () y activar el resultado.

Como mencionó Rohan, QSignalMapper es la solución recomendada, ya que sender () es un poco pirateado. Su ventaja es que es más fácil de usar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top