1

我正在一个 QT 复杂应用程序中工作,该应用程序通过 QT 4.8 插槽为 HTTP/TCP 请求提供服务。

示例模块(QT 插槽):

QString HelloWorld::greet()
{
  return "Hello world...";
}

使用这个模块,我们可以通过 HTTP 或 TCP 请求调用我们的服务。

我正在添加一个需要从外部 HTTP 服务器同步检索数据的新模块。为此,我使用了 QEventLoop 和 QNetworkAccessManager。

问题发生在 QEventLoop 的行为上。我已将我的问题降到最低:

bool NewModule::sendRequest()
{
  QEventLoop loop;

  qDebug() << "BEFORE";

  loop.exec();

  qDebug() << "AFTER";
}

当我从入口点 X(即执行 HTTP 请求)调用此方法时,事件循环会循环(仅记录“BEFORE”),但是当从入口点 Y(即执行 TCP 请求)调用相同的方法时,事件循环不循环(记录“之前”和“之后”)。

我不知道为什么会发生这种不同的行为。有人可以指出我正确的方向吗?

谢谢

4

0 回答 0