Нет такого сигнала QTableWidget :: cellChanged (int, int) - PullRequest
1 голос
/ 30 января 2010

Название хорошо описывает мою проблему.

оскорбительная строка кода:

connect(table, SIGNAL(cellChanged(row, 5)), this, SLOT(updateSP()));

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

Я использую Qt 4.5.2 в Ubuntu Karmic, g ++.

Кто-нибудь знает, что я делаю не так? Документация Trolltech относительно cellChanged () не содержит каких-либо особых требований.

Я в растерянности.

Спасибо за любой совет!

1 Ответ

6 голосов
/ 30 января 2010

мне кажется, что вы не понимаете концепции сигналов и слотов Qt. Макрос SIGNAL & SLOT принимает интерфейс . Что-то вроде

connect(table, SIGNAL(cellChanged(int, int)), this, SLOT(updateSP()));

может работать, но вам нужно иметь такое же количество аргументов в вашем слоте, чтобы оно работало так, как вы ожидаете:

connect(table, SIGNAL(cellChanged(int, int)), this, SLOT(updateSP(int, int)));

Слот должен выглядеть примерно так:

void ClassFoo::updateSP(int row, int column)
{
  // row is the number of row that was clicked;
  // column is the number of column that was clicked;
  // Here we go! It's right place to do some actions. =)
}
...