LINUX.ORG.RU

QTcpSocket и потоки

 , , qtcp


0

1

Сейчас очень глупый вопрос спрошу, но нигде не могу найти ответ. У меня есть класс, в котором есть QTcpSocket и слот, который вызывается, когда сокет готов отдать пришедшие данные. В зависимости от этих данных, может заэмититься сигнал, либо вызваться другие методы этого класса. Так вот, как мне объект этого класса засунуть в отдельный поток? Ведь поток работает, пока работает код в run(), а мой объект спит и просыпается только по сигналу. Или я что-то совсем не так делаю?

Делай его наследником qthread и перегружай run. В твоём случае там будет только одна строчка - exec(). Если твой класс уже является наследником какого-либо кьютишного класса, то тут сложнее, потому-что в qt множественное наследие очень не приветствуется. Решение зависит от дизайна твоего проекта. Коннекты оставь без изменений, будет работать и так.

nanoolinux ★★★★
()
Ответ на: комментарий от nanoolinux
QThread thread;
SocketOwner object;
object.moveToThread(&thread);
thread.start();

У меня все работало по такой схеме, зачем тут наследоваться от QThread непонятно. Ну окей, в каких-то древних версиях Qt4 QThread::run() был без реализации, сейчас же он вызывает exec.

anonymous
()
Ответ на: комментарий от anonymous

Да, ты прав. Твой вариант лучше. Учту это в будущем.

nanoolinux ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.