Я пробовал делать несколькими способами.
К слову, в дочернем потоке при начале его работы и при завершении я вывожу сообщения в консоль, чтобы отследить моменты его запуска и остановки.
С основным потоком я пробовал поступать разными способами:
1. Делал бесконечный цикл до завершения работы дочернего потока, пытаясь насильно перерисовывать графический интерфейс основного потока. Примерно так:
...
MyThread thr;
thr.start();
while(!thr.finished()) {
qApp->processEvents();
}
...
2. Делал дочерний поток глобальным, чтобы он не убивался при выходе из функции основного потока, которая его вызывает.
void someClass::someFunc()
{
thr.start();
/* Всё просто - запустили поток и вышли из функции. Пускай себе там работает наздоровье...
При этом поток не убивается, а продолжает работать - ведь он определён как глобальный,
а графический интерфейс должен быть снова доступен пользователю для действий */
}
Во всех случаях дочерний поток отрабатывает свой "setContent()", извещая меня о начале и завершении своей работы в консоль посредством qDebug. Но за то время, что он работает, графический интерфейс основного потока неизменно подвисает. И перемещение графического окна основного потока за границы экрана приводит к затиранию его содержимого, пока не закончит работу дочерний поток.
В первом методе я допускал, что подобное явление возможно из-за цикла, который я насильно вставил в основной поток, чтобы дождаться завершения работы дочернего. Но второй метод отвязан от этого и должен гарантированно работать, чего не происходит...
Может, я что-то делаю неправильно?!