Pergunta

Eu estou tentando mudar uma determinada mensagem caixa de texto. Ele irá exibir a minha saída.

Isto é o que eu tenho na minha TCPClient ()

#include "form2.h"....string recvMSG = "random";    
QString s1 = QString::fromLocal8Bit(recvMSG.c_str());

182 :: Form2 :: changeOutput (S1);

within my form2.h I have:

...
void Form2::changeOutput(QString &s)
{
    output_box.setText(s1);
}
...

Na minha principal:

#include <qapplication.h>
#include "form2.h"
#include <string.h>     /* for memset() */
#include <iostream>
#include <stdlib.h>     /* for atoi() and exit() */

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    Form2 w;
    w.show();
    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
    return a.exec();
}

Agora, eu sei que eu deveria estar chamando w.changeOutput (S1). Mas o problema é, w não é declarada dentro do meu TCPClient.cpp ...

QT fez a função main () para mim. Não estou certo de como resolver este problema. Quero beable para chamar w.changeOutput (S1) de dentro do meu TCPClient.cpp.

Esta é a im erro ao obter. TCPClient.cpp: 182: erro: não pode chamar função membro ‘virtual void Form2 :: changeOutput (std :: string)’ sem objeto

Graças.

Foi útil?

Solução

Se eu entendi o problema corretamente, acho que o "Qt-way" adequada seria a de ter o cliente TCP enviar um sinal quando recebe uma mensagem, e em seguida, em sua função principal conectar o sinal para o slot changeOutputs.

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