Pergunta

O título descreve meu problema muito bem.

A linha de código ofensiva:

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

Não consigo pensar em nenhuma razão para que esse sinal não seja válido. Pesquisei no Google e encontrei algumas pessoas com o mesmo problema, mas as soluções colocadas lá não funcionam.

Estou usando o QT 4.5.2 no Ubuntu Karmic, G ++.

Alguém sabe o que estou fazendo de errado? A documentação da TrollTech sobre CellChanged () não menciona nenhum requisito especial.

Estou perdido.

Obrigado por qualquer conselho!

Foi útil?

Solução

parece para mim que você não entende Sinais de QT e conceitos de slots. A macro de sinal e slot toma um interface. Algo como

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

Pode funcionar, mas você precisa ter a mesma contagem de argumentos no seu slot, para fazê -lo funcionar como você espera:

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

O slot deve parecer algo assim:

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. =)
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top