ничего не понял...
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void message(QString mess);
private:
void createServer();
QTextBrowser* TextBrowser;
Server* server;
};
class Server : public QTcpServer
{
Q_OBJECT
public:
Server(QObject *parent = 0);
signals:
void messageTo(QString mess);
private slots:
void message(QString mess);
protected:
void incomingConnection(int socketDescriptor);
};
class FortuneThread : public QThread
{
Q_OBJECT
public:
FortuneThread(int socketDescriptor, const QString &server, QObject *parent);
void run();
signals:
void error(QTcpSocket::SocketError socketError);
void messageTo(QString mess);
private:
int socketDescriptor;
QString text;
};
что бы догнать месседж от FortuneThread до MainWindow приходится 2 раза делать connect в Server и в MainWindow
QObject::connect(thread,SIGNAL(messageTo(QString)),this,SLOT(message(QString)));//this - server
QObject::connect(server,SIGNAL(messageTo(QString)),this,SLOT(message(QString)));//this - MainWindow
гнать сигнал вот так
void Server::message(QString mess)
{
qDebug(mess.toAscii());
emit messageTo(mess);
}
после получения в MainWindow выводим TextBrowser
мне кажется глупо просто так делать,а как по другому не знаю,вопрос скорее теоретический,как лучше реализовать передачу объекта через лишний класс?
хотя вот так клево все)
QObject::connect(thread,SIGNAL(messageTo(QString)),this,SIGNAL(messageTo(QString)));
все вопрос решен)
передано напрямую
QObject::connect(thread,SIGNAL(messageTo(QString)),this->parent(),SLOT(message(QString)));