[与
this question有关]
我写了这段代码来理解qt信号和插槽是如何工作的.我需要有人解释这种行为,并告诉我,我对自己的结论是否正确.
我的节目:
connectionhandler.h
#ifndef CONNECTIONHANDLER_H #define CONNECTIONHANDLER_H #include <QTcpserver> class ConnectionHandler : public QObject { Q_OBJECT public: ConnectionHandler(); public slots: void newConn(); private: QTcpserver *server; }; #endif // CONNECTIONHANDLER_H
connectionhandler.cpp
#include "connectionhandler.h" #include <QTextStream> ConnectionHandler::ConnectionHandler() { server = new QTcpserver; server->listen(QHostAddress::LocalHost,8080); QObject::connect(server,SIGNAL(newConnection()),this,SLOT(newConn())); } void ConnectionHandler::newConn() { QTextStream out(stdout); out << "new kanneksan!\n"; out.flush(); }
main.cpp中
#include <QCoreApplication> #include "connectionhandler.h" int main(int argc,char* argv[]) { QCoreApplication app(argc,argv); ConnectionHandler handler; return app.exec(); }
现在,运行此程序将其发送到无限循环中以查找新连接.
观察:如果我不调用app.exec(),程序立即返回(应该如此).
问题:为什么?
问题:如果我将插槽连接为排队连接,何时执行插槽调用?
问题:如果app.exec()是一个无限循环的排序,newConnection()信号是如何发出的?
大问题:他们的任何“第二线程”是否涉及到这里? (我期待一个没有,一个非常优雅的解释:))
谢谢,
JRH
PS:还有谁有这种嵌套的括号综合症?喜欢“(.. :))”或“(..(..))”?
解决方法
原文地址:https://www.jb51.cc/c/118561.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。