Come posso collegare il segnale premuto () di 32 pulsanti a una singola funzione senza dichiarare 32 slot?

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

  •  05-07-2019
  •  | 
  •  

Domanda

Ho un widget e al suo interno ci sono 32 pulsanti. Devo collegare il segnale premuto () di ciascun pulsante a uno slot per poter chiamare una funzione i cui parametri dipendono dal pulsante che ho premuto. In questo momento l'ho fatto aggiungendo 32 slot sotto forma di on_QPushButtonName_pressed () ma questo è un sacco di slot. Mi chiedevo se esiste un altro modo per farlo che è più piccolo. Ho fatto qualcosa di simile ma stavo lavorando con widget personalizzati in modo da poter creare un nuovo segnale nel codice della mia classe, ma vorrei evitare di creare un widget personalizzato per un solo pulsante.

È stato utile?

Soluzione

Usa la classe QSignalMapper. La documentazione - http://doc.qt.io/qt-5/qsignalmapper.html - ha un esempio abbastanza vicino a quello che vuoi.

Altri suggerimenti

Un'altra possibilità: creare un solo slot, chiamare mittente () e attivare il risultato.

Come menzionato da Rohan, QSignalMapper è la soluzione consigliata, poiché mittente () è un po 'un trucco. Il suo vantaggio è che è più facile da usare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top