QT creando mis objetos de formulario, ¿cómo acceder a ese formulario?

StackOverflow https://stackoverflow.com/questions/1809810

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy intentando cambiar un determinado mensaje de cuadro de texto. Mostrará mi salida.

Esto es lo que tengo en mi 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);
}
...

En mi 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();
}

Ahora, sé que debería llamar a w.changeOutput (s1). Pero el problema es que w no está declarado dentro de mi TCPClient.cpp ...

QT hizo la función main () para mí. No estoy seguro de cómo resolver este problema. Quiero poder llamar a w.changeOutput (s1) desde mi TCPClient.cpp.

Este es el error que estoy obteniendo. TCPClient.cpp: 182: error: no se puede llamar a la función miembro & # 8216; virtual void Form2 :: changeOutput (std :: string) & # 8217; sin objeto

Gracias.

¿Fue útil?

Solución

Si entendí el problema correctamente, creo que la correcta " Qt-way " sería que el cliente TCP envíe una señal cuando reciba un mensaje y luego, en su función principal, conecte esa señal a la ranura changeOutputs.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top