Я пишу простой чат UDP в Qt. Существует класс QUDPSocket, обеспечивающий прослушивание и отправку сообщений. Проблема в том, что она управляется сигналами, поэтому я должен вызвать приложение app.exec(), иначе прослушивание не будет излучать никакого сигнала. Это мой main.cpp:Qt - как инициализировать некоторые действия изнутри приложения?
#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(), который будет снова и снова запускаться с функциями обновления GUI? Somethink like (if exists): app.addFunctionToLoop (функция); а затем app.exec(); – Jurass
Как я уже говорил, вы можете использовать таймеры, см., Например, [QTimer] (http://qt-project.org/doc/qt-4.8/timers.html) – jku