Чисто на всякий случай, оставлю этот код тут. Как я понимаю, это то, что вы хотите получить: функция в отдельном потоке, без блокировки GUI + вам нужно дождаться результатов выполнения.
QEventLoop loop;
QFutureWatcher watcher = QConcurrent::run(someFunc);
connect(&watcher, &QFutureWatcher::finished, &loop, &QEventLoop::quit);
loop.exec();
auto result = watcher.result();
Если результат выполнения не нужен, то функцию можно просто асинхронно запустить одним методом run.