Qt - 如何从应用程序内部初始化一些动作?

Qt - how to initialize some actions from inside of an application?

我正在用 Qt 编写简单的 UDP 聊天。有 QUDPSocket class 提供监听和发送消息。问题是它是由信号控制的,所以我必须调用 app.exec() 否则监听不会发出任何信号。这是我的 main.cpp:

#include <QtGui/QApplication>
#include "receiver.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
int port = 5555;
Receiver rec;
rec.startListening(port);
for(int i = 0; i < 5000; i++)
{
    QByteArray ba;
    ba = "Hello";
    rec.send(ba, QHostAddress::LocalHost, port);
    ba = rec.getLastMsg();
    QTextStream(stdout) << i << ":" << ba.data() << endl;
}

return app.exec();
}

问题是 QUDPSocket 在调用 app.exec() 后开始工作。它疯了。 Qt 是否提供了一种方法来处理这个问题而不使用另一个线程来发送 UDP 数据包?

谢谢

App.exec() 启动主循环并且根本不会阻止您在同一线程中发送数据包。您只需要根据事件发送它们——例如用户按下回车键或计时器(如果您只是在测试)。这就是基于事件的编程在基本上所有工具包中的工作方式。