Comment connecter le signal pressé () de 32 boutons à une seule fonction sans déclarer 32 slots?

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

  •  05-07-2019
  •  | 
  •  

Question

J'ai un widget dans lequel se trouvent 32 boutons. Je dois connecter le signal enfoncé () de chaque bouton à un emplacement afin d'appeler une fonction dont les paramètres dépendent du bouton sur lequel j'ai appuyé. En ce moment, j’ai fait cela en ajoutant 32 slots sous la forme on_QPushButtonName_pressed () mais c'est beaucoup de machines à sous. Je me demandais si je pouvais le faire d'une manière plus petite. J'ai fait quelque chose de similaire, mais je travaillais avec des widgets personnalisés afin de pouvoir créer un nouveau signal dans le code de ma classe, mais j'aimerais éviter de créer un widget personnalisé pour un seul bouton.

Était-ce utile?

La solution

Utilisez la classe QSignalMapper. La documentation - http://doc.qt.io/qt-5/qsignalmapper.html - a un exemple assez proche de ce que vous voulez.

Autres conseils

Autre possibilité: créer un seul emplacement, appeler sender () et activer le résultat.

Comme Rohan l’a mentionné, QSignalMapper est la solution recommandée, car sender () est un peu un hack. Son avantage est qu’il est plus facile à utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top