Я знаю, что запускать какой-либо виджет с графическим интерфейсом из отдельного потока — это плохо. Для только сообщений это можно преодолеть с помощью сигналов в основной поток. Но что, если потоку требуется пользовательский ввод, как можно передать ответ потоку и как этот поток может ждать этого ответа?
Мой конкретный случай — это приложение, использующее sftp из libssh. Во время подключения и аутентификации пользователю может потребоваться ответить на один или несколько вопросов. Но из соображений производительности все SSH/SFTP должны выполняться в отдельном потоке.
QMetaObject::invokeMethod(label, "setText", Q_ARG(QString, "foo"));
25.06.2012