【发布时间】:2015-01-05 20:12:08
【问题描述】:
我有一个循环应该尝试从范围连接到每个 IP:
for(...){
socket->connectToHost(addres,port);
do stuff....
if(socket->waitForConnected(2000))
{
do stuff...
if(socket->waitForReadyRead(1000))
{
do stuff...
}
else do stuff...
}
do stuff ......
}
在连接尝试期间 UI 冻结,因为在此期间没有事件处理。我试图添加 QCoreApplication::processEvents();在循环内部,但是在waitForConnected期间它仍然会冻结很长时间,我也尝试使用计时器,但这也不起作用,因为QT首先需要事件处理才能使用计时器。有什么方法可以在连接期间提供事件处理(防止 UI 冻结),或者为 waitForConnection 使用一些非阻塞替代方案?
【问题讨论】:
-
你为什么不使用适当的信号,比如readyRead,在这种情况下你的GUI不会被冻结。
标签: c++ qt sockets event-handling