QTcpServer 和 QTcpSocket 依赖于消息于循环,所以你要使用它们的话,是一定要启动 QApplication 并且调用 app.exec() 的。
QTcpServer 和 QTcpSocket 的编程方式都是 signal/slot,不过也有 waitForRead() 和 waitForWritten() 两个函数。反正不好用。
一般说,即使是控制台程序,你也应该实例化 QCoreApplication 不然有些 Qt 组件不能用。比如 QThread 也依赖于 QCoreApplication 的存在。
Qt 写控制台程序很爽的,完全可以当作更好的 C++ 标准库使用。
但不推荐拿 QtNetwork 那一套写网络程序。可以考虑看看我弄的 QtNetworkNg 哈:
https://qtng.org/
https://github.com/hgoldfish/qtnetworkng/
会更适合写 Qt 的网络程序。
【 在 jingyou 的大作中提到: 】
: 标 题: [求助]求助大神关于Qt的一个使用问题(信号和槽)
: 发信站: 水木社区 (Thu Sep 15 09:23:23 2022), 站内
:
: 写一个控制台程序,使用Qt的网络库,比如QTcpServer QTcpSocket这些,我看了网上一些例程,基本是写个类+server、socket的信号和槽,是不是使用Qt的库必须要有信号和槽?还是本身QTcpServer QTcpSocket就是要依靠信号和槽机制才能实现对应的功能,而像QString QHostAddress这
: 种类可以完全不需要信号和槽?
:
: 另外Qt Creator创建的Qt控制台程序,有
: QCoreApplication a(argc, argv);
: return a.exec();
: 这2句,我查了是关于消息循环的,如果我的控制台程序本身不涉及这个,是不是可以去掉这2行?还是说Qt中有一些类必须基于消息循环,如果使用它们,这2句不能去掉?
:
: 谢谢大家!
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 119.84.70.*]
--
FROM 117.24.95.*