LINUX.ORG.RU

QTcpSocket в отдельном треде


0

0

Создал сокет, повесил на событие входящего подключения создание нового треда, отнаследованного от QThread. Если в его методе run() писать socket->waitForReadyRead(); и далее socket->write(block); то всё отлично. Однако если перенести код в отдельный слот и повесить его на сигнал readyRead, а в run() войти в цикл событий через exec(), то когда программа начнёт выполнять socket->write(block), то выскакивает сообщение:

QObject: Cannot create children for a parent that is in a different thread. (Parent is QNativeSocketEngine(0xbb9de0), parent's thread is Connection(0xbb8910), current thread is QThread(0xb8b4a0)

т.е. write почему-то залезает в главный тред программы. Что за хрень?

Документацию по Qt читать не пробовал? Из сообщения ясно что именно тебе менять надо (родителя твоего объекта).

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