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