Como posso ligar o sinal pressionado () de 32 botões para uma única função sem declarar 32 slots?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Eu tenho um widget e dentro dela estão 32 botões. Eu preciso ligar o sinal de cada botão pressionado () para um slot, a fim de chamar uma função que é parâmetros dependem de qual botão eu tenho pressionado. Agora eu fiz isso através da adição de 32 slots na forma de on_QPushButtonName_pressed () mas isso é um monte de slots. Eu queria saber se existe outra maneira que eu poderia fazê-lo, que é menor. Eu tenho feito algo semelhante, mas eu estava trabalhando com widgets personalizados para que eu pudesse apenas criar um novo sinal no código da minha classe, mas eu gostaria de evitar a criação de um widget personalizado para apenas um único botão.

Foi útil?

Solução

classe

Use o QSignalMapper. A documentação - http://doc.qt.io/qt-5/qsignalmapper.html - tem um exemplo muito perto do que você quer

.

Outras dicas

Outra possibilidade:. Criação de apenas um slot, chamando sender() e ligar o resultado

Como Rohan mencionado, QSignalMapper é a solução recomendada, uma vez que o remetente () é um bocado de um hack. Sua vantagem é que é mais fácil de usar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top