QT создает объекты моей формы, как получить доступ к этой форме?
Вопрос
Я пытаюсь изменить определенное сообщение в текстовом поле.Он отобразит мой вывод.
Это то, что у меня есть в моем 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);
}
...
В моем основном:
#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();
}
Теперь я знаю, что мне следует вызвать w.changeOutput(s1).Но проблема в том, что w не объявлен в моем TCPClient.cpp...
QT создал для меня функцию main().Я не уверен, как решить эту проблему.Я хочу иметь возможность вызывать w.changeOutput(s1) из моего TCPClient.cpp.
Это ошибка, которую я получаю.TCPClient.cpp:182:ошибка:невозможно вызвать функцию-член «virtual void Form2::changeOutput(std::string)» без объекта
Спасибо.
Решение
Если я правильно понял проблему, я думаю, что правильный «Qt-способ» заключался бы в том, чтобы TCP-клиент отправлял сигнал при получении сообщения, а затем в вашей основной функции подключал этот сигнал к слоту ChangeOutputs.