QT создание моих объектов формы, как получить доступ к этой форме? - PullRequest
0 голосов
/ 27 ноября 2009

Я пытаюсь изменить определенное сообщение в текстовом поле. Будет отображаться мой вывод.

Это то, что у меня есть в моем 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) 'без объекта

Спасибо.

1 Ответ

2 голосов
/ 27 ноября 2009

Если я правильно понял проблему, я думаю, что правильным «Qt-way» было бы, чтобы TCP-клиент отправлял сигнал при получении сообщения, а затем в вашей основной функции подключал этот сигнал к слоту changeOutputs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...