"Существует ли специальная функция в программировании, управляемом событиями, которая позволила бы мне просто записать процесс в одном вызове функции и позволить mainThread выполнять свою работу во время ожидания?"
Это был бы неблокирующий процесс.
Но ваш первоначальный запрос был: «Как я могу реализовать процесс блокировки в одном слоте, не останавливая графический интерфейс?»
Возможно, что вы ищете способ остановить другую обработку, когда какой-то - любой - процесс решает, что пришло время блокировать? Есть, как правило, способы сделать это, да, путем вызова метода для одного из родительских объектов, который, конечно, будет зависеть от конкретных объектов, которые вы используете (например, фрейм).
Посмотрите на родительские объекты и посмотрите, какие методы у них есть, которые вы хотели бы использовать. Возможно, вам придется наложить один из них, чтобы получить желаемые результаты.