지 app.exec()
는 무한 루프 반환 main()
?
고 싶은 루 서버 클라이언트 통신 아래 그러나 그것을 실행하는 그냥한 다음에 주요 기능으로 끝나 app.exec()
나는 새로운 모두 Qt C++,어떻게 관리할 수 있습니 반복?
int main(int argc, char *argv[])
{
cout << "Waiting for the next request " << endl;
QApplication app(argc, argv);
// Prepare our context and socket
zmq::context_t context(1);
zmq::socket_t socket(context, ZMQ_REP);
socket.bind("tcp://*:2424");
zmq::message_t request;
QQmlApplicationEngine engine;
VideoStreamer videoStreamer;
imageProvider *liveOriginalImageProvider(new imageProvider);
imageProvider *liveMaskedImageProvider(new imageProvider);
//********SERVER CLIENT COMMUNICATION BEGINS******//
// Wait for next request from client
cout << "Waiting for the next request ." << endl;
socket.recv(&request);
cout << "Waiting for the next request.. " << endl;
string replyMessage = string(static_cast<char *>(request.data()), request.size());
// Print out received message
cout << "Received from client (Python): " + replyMessage << endl;
// See the gradual sending/replying from client
sleep(1);
// Send reply back to client
string msgToClient("W");
zmq::message_t reply(msgToClient.size());
memcpy((void *) reply.data(), (msgToClient.c_str()), msgToClient.size());
socket.send(reply);
//*********SERVER CLIENT COMMUNICATION ENDS**********//
engine.rootContext()->setContextProperty("VideoStreamer",&videoStreamer);
engine.rootContext()->setContextProperty("liveOriginalImageProvider",liveOriginalImageProvider);
engine.rootContext()->setContextProperty("liveMaskedImageProvider",liveMaskedImageProvider);
engine.addImageProvider("liveOriginal",liveOriginalImageProvider);
engine.addImageProvider("liveMasked",liveMaskedImageProvider);
const QUrl url(QStringLiteral("qrc:/main.qml"));
engine.load(url);
QObject::connect(&videoStreamer,&VideoStreamer::originalImage,liveOriginalImageProvider,&imageProvider::updateImage);
QObject::connect(&videoStreamer,&VideoStreamer::maskedImage,liveMaskedImageProvider,&imageProvider::updateImage);
return app.exec();
}
---------업데이트---------
내가 만들이 스레드에 스레드가 있습니다.h
class MyThread : public QThread{
public slots:
void run();
};
에 thread.cpp 나는 선언의 방법:
void MyThread :: run() {
// Prepare our context and socket
zmq::context_t context(1);
zmq::socket_t socket(context, ZMQ_REP);
socket.bind("tcp://*:2424");
zmq::message_t request;
//********SERVER CLIENT COMMUNICATION BEGINS******//
// Wait for next request from client
cout << "Waiting for the next request ." << endl;
socket.recv(&request);
cout << "Waiting for the next request.. " << endl;
string replyMessage = string(static_cast<char *>(request.data()), request.size());
// Print out received message
cout << "Received from client (Python): " + replyMessage << endl;
// See the gradual sending/replying from client
sleep(1);
// Send reply back to client
string msgToClient("W");
zmq::message_t reply(msgToClient.size());
memcpy((void *) reply.data(), (msgToClient.c_str()), msgToClient.size());
socket.send(reply);
exec();
//*********SERVER CLIENT COMMUNICATION ENDS**********//
}
에 main.cpp 나라:
QThread *thread = new QThread();
MyThread *myThread = new MyThread();
myThread->moveToThread(thread);
myThread->connect(thread, SIGNAL(started()), myThread, SLOT(run()));
thread->start();
나 Error: Class declaration lacks Q_OBJECT macro.
지 않코드를 상속하 어떤 qobject 로? 를 호출하려면 어떻게 해야 하나요?루프 제대로?