Frage

Ich versuche, eine bestimmte Textfeld Nachricht zu ändern. Es wird mir eine Ausgabe angezeigt werden soll.

Dies ist, was ich in meinem TCPClient haben ()

#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);
}
...

In meinem Haupt:

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

Nun, ich weiß, ich sollte w.changeOutput anrufen (s1). Aber Problem ist, w nicht in meiner TCPClient.cpp erklärt wird ...

QT machte die main () Funktion für mich. Ich bin nicht sicher, wie dieses Problem zu lösen. Ich möchte beable w.changeOutput (s1) von innerhalb meiner TCPClient.cpp zu nennen.

Dies ist der Fehler im bekommen. TCPClient.cpp: 182: Fehler: kann nicht rufen Memberfunktion ‚virtual void Form2 :: changeOutput (std :: string)‘ ohne Objekt

Danke.

War es hilfreich?

Lösung

Wenn ich das Problem richtig verstanden habe, denke ich, die richtige „Qt-way“ wäre der TCP-Client zu haben, um ein Signal zu senden, wenn es eine Nachricht empfängt, und dann in Ihre Hauptfunktion dieses Signal an den changeOutputs Steckplatz angeschlossen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top