Слот QT получает сигнал дважды - PullRequest
1 голос
/ 27 января 2010

В QT4.5,

Я использую QTableWidget и подключил сигнал QTableWidget :: itemClicked () к пользовательскому слоту, например:

connect(_table, SIGNAL(itemClicked(QTableWidgetItem*)), item, SLOT(sloItemClicked(QTableWidgetItem*)));

Я создаю такое соединение для каждой строки, которую добавляю в таблицу.

Проблема в том, что слот sloItemClicked вызывается более одного раза, кажется, что он называется X time, где X - номер строки в моей таблице.

Но он все время призывает к одной и той же строке. (QTableWidgetItem, который я получаю, тот же).

Это проблема, потому что при щелчке строки я ее удаляю. Поэтому в следующий раз, когда он вызывается, QTableWidgetItem больше не действителен, и он аварийно завершает работу.

Если у меня только одна строка, все работает как положено ..

Есть идеи?

Спасибо

1 Ответ

8 голосов
/ 27 января 2010

Соединение следует создавать только один раз, поскольку сигнал является сигналом в таблице , а не для отдельного QTableWidgetItem. При выдаче вы получите QTableWidgdetItem, на который вы нажали в качестве аргумента.

...