Из исходного кода Qt (около 2006 г.) конструктор для QObject (QObject *) содержит следующее:
if (parent && parent->d_func()->threadData != d->threadData) {
qWarning("QObject: Cannot create children for a parent that is in a different thread.");
Вы можете видеть, что чем бы ни был d_func, он содержит указатель на что-то, называемое threadData. Это утверждение означает, что если родитель этого объекта существует, а родитель threadData не == (вероятно, сравнивается по указателю) с данными потока этого объекта (дочернего объекта), то вы получите это предупреждение.
Итак, исходя из исходного кода Qt, похоже, что вы пытаетесь создать объект в новом объекте потока и сделать его родительским объектом какой-то другой объект, чем объект потока.
Простое решение: не делай этого. найти другой путь.
Более продвинутое решение: создайте слот в родительском элементе и подключите его к сигналу в дочернем элементе. Слот фактически создает дочерний элемент, сигнал запускается, когда вы хотите его создать.
http://www.koders.com/cpp/fid824DA2E851F8AF2534234010E4E72BA361F9648A.aspx?s=mdef%3Asocket
Кстати, это не первый случай, когда я что-то нашел в Qt, просматривая исходный код. Часто вы можете найти источник интересующего вас класса и посмотреть, что случилось, посмотрев туда.