Slot QT é sinalizado duas vezes
-
22-09-2019 - |
Pergunta
Em QT4.5,
Eu uso um QTableWidget e conectei o sinal QTableWidget::itemClicked() a um slot personalizado como este:
connect(_table, SIGNAL(itemClicked(QTableWidgetItem*)), item, SLOT(sloItemClicked(QTableWidgetItem*)));
Eu crio essa conexão para cada linha que adiciono à tabela.
O problema é que o slot sloItemClicked é chamado mais de uma vez, parece que ele é chamado na hora X, onde X é o número de linhas da minha tabela.
Mas está pedindo a mesma linha o tempo todo.(QTableWidgetItem que recebo é o mesmo).
Isso é um problema, porque quando a linha é clicada, eu a excluo.Portanto, na próxima vez que for chamado, QTableWidgetItem não será mais válido e travará.
Se eu tiver apenas uma linha, tudo funcionará conforme o esperado.
Qualquer ideia?
Obrigado
Solução
Você só deve criar a conexão uma vez, pois o sinal é um sinal no mesa e não em um indivíduo QTableWidgetItem
.Quando emitido, ele lhe dará o QTableWidgdetItem
que você clicou como argumento.