0

我知道在单独的线程中运行任何类型的 GUI 小部件都是不好的。对于消息,这可以通过向主线程发出信号来克服。但是如果线程需要用户输入,如何将答案返回给线程,以及该线程如何等待该答案?

我的特殊情况是一个使用来自 libssh 的 sftp 的应用程序。在连接和认证期间,用户可能需要回答一个或多个问题。但出于性能原因,所有 SSH/SFTP 的东西都必须在单独的线程中运行。

4

1 回答 1

1

根本不可能在非 GUI 线程中使用 GUI 类。你可以做的是使用信号和槽来从一个线程到另一个线程交换信息。从您的工作线程发送信号并等待信号量,例如QWaitCondition. 发回消息并附上答案。

在您的情况下,您还可以使用Qt::BlockingQueuedConnection连接类型来停止您的工作线程,直到用户输入数据。QInputDialog也等到用户完成输入数据。

于 2012-06-24T15:40:11.133 回答