Вероятно, я бы решил эту проблему, если бы графический интерфейс работал в главном потоке, а затем запустить QThread , когда флажок установлен.Этот QThread может работать непрерывно или останавливаться и перезапускаться с помощью флажка в зависимости от требований.
После завершения процесса, если объем данных невелик, потокобезопасный сигнал можетиспользоваться для передачи данных в поток GUI, а слот в потоке GUI может обновлять отображение.Если данных много (как вы подразумеваете в своем вопросе), сделайте общую память доступной для обоих (либо располагая ее в отдельном модуле, либо используя указатель, созданный при создании объекта QThread), и защитите доступ кпамять с общим QMutex .Этот QMutex может быть создан в потоке GUI и затем передан в рабочий поток при его создании.Когда данные готовы к обработке, поток-безопасный сигнал может быть отправлен из рабочего потока в поток GUI, и слот в потоке GUI может заблокировать (или попытаться заблокировать) QMutex, взять данные из общей памяти и затем разблокироватьQMutex (и, возможно, отправить сигнал обратно рабочему потоку, чтобы он продолжал).