Ваша функция foo () может вызывать wait () для объекта [QWaitCondition] [1], тогда ваша кнопка может вызывать wakeOne () для того же объекта, чтобы вызвать wait ().
Тем не менее, на самом деле нет необходимости использовать многопоточность для переопределения QInputDialog :: getText ().Вы должны быть в состоянии переопределить эту функциональность внутри одного потока без каких-либо проблем, и делать это таким образом будет намного проще и надежнее.
(Примечание: если вы хотите, чтобы ваша версия getText () блокировала ине возвращать, пока не будет нажата кнопка, вам нужно будет вызвать QDialog :: exec (). Хотя я не рекомендую этот стиль программирования, так как он подвержен ошибкам ... например, что произойдет, если пользователь закроетродительское окно вашего QInputDialog, в то время как QInputDialog все еще открыт?вместо этого делать все на основе событий (т.е. только сигналы и слоты), а не пытаться блокировать или рекурсировать цикл событий Qt в вашем собственном коде)