Russian Qt Forum

Qt => Вопросы новичков => Тема начата: demaker от Сентябрь 07, 2011, 17:10



Название: Многопоточность и вывод информации от клиентов
Отправлено: demaker от Сентябрь 07, 2011, 17:10
Помогите понять ???
Есть многопоточный сервер.
По соединению с клиентом создается новый Tab, в котором есть textEdit и в нем нужно отобразить инфу, поступающую от клиента.
В серваке я делаю сигнал по окончанию считывания посылки и соответственно вывод инфы.

void EchoServer::incomingConnection(int socketDescriptor)
{
    EchoThread* thread = new EchoThread(socketDescriptor,this); // создаем отдельный поток
    connect(thread,SIGNAL(finished()),this,SLOT(removeThread()),Qt::DirectConnection);
    m_threads.append(thread);

    connect(thread,SIGNAL(receiveComplete(QString)),this,SIGNAL(signal_showByteArray(QString))); //!!!!!!!!!!!
    connect(thread,SIGNAL(idNewClient(QString)),this,SIGNAL(signal_newClient(QString)));
    emit signal_addTab();

    thread->start();
}

signal_addTab  связываю со слотом в котором происходит добавка Tab-а.

Но не могу понять как привязать инфу которая относится именно к этому Tab-у, потому что выводится все сплошняком.
Так как я хочу, чтобы каждый таб был адресован к новому подключению клиента.

Отдельно завел класс:

class miniTab: public QWidget
{
    Q_OBJECT

public:
    QTextEdit* txtEdit;
    QHBoxLayout* h_bLayout;

public:
    miniTab();

public slots:
    void showMessage(const QString );
};

Может нужно создавать в новом потоке подключения объект типа miniTab???
Или же в incomingConnection(...) по поступлению нового конекта???
КАК СДЕЛАТЬ Правильно??? ??? ??? ???


Название: Re: Многопоточность и вывод информации от клиентов
Отправлено: LisandreL от Сентябрь 07, 2011, 19:00
EchoServer в основном потоке живёт? Тогда порождать новый таб в нём и receiveComplete с idNewClient конектить уже к табу, а не к this/


Название: Re: Многопоточность и вывод информации от клиентов
Отправлено: demaker от Сентябрь 08, 2011, 11:07
Ну а как быть с receiveComplete(QString ) если я высылаю этот сигнал из потока и затем связываю с сигналом signal_showByteArray(QString) в объекте класса echoServer чтобы затем отобразить на форме??? Я же хочу с каждого подключения в отдельном табе выводить данныепо этому подключениюю :)


Название: Re: Многопоточность и вывод информации от клиентов
Отправлено: demaker от Сентябрь 08, 2011, 11:10
EchoServer  живет в основном потоке.
Потом по каждому подключению заводется свой поток класса типа EchoThread и т.д  :)
Вот думаю как сделать help please ??? :)


Название: Re: Многопоточность и вывод информации от клиентов
Отправлено: demaker от Сентябрь 12, 2011, 08:20
Спасибо за помощь :) все заработало