本文是在子线程成创建QTcpSocke对象,并且向本地服务端在不同时刻发送不同指令。网上教程有很多,但发现大多数开启子线程的方式都是子类化QThread,然后在run()函数中写入需要执行的代码,但有篇博客强烈批评了该做法,主要原因请看以下两篇博客。
Qt 的线程与事件循环——可打印threadid进行观察槽函数到底是在哪个线程里执行,学习moveToThread的使用)
另外也发现基于moveToThread方法来实现Tcp通讯的比较少,所以特意记录在此。
首先定义子类化QObject,
#include <QtCore>
#include <QTcpSocket>
class Worker : public QObject
{
Q_OBJECT
public:
~Worker()
{
if(tcp!=nullptr)
{
delete tcp;
}
}
private:
QTcpSocket *tcp;
//int i;
public:
void foo()
{
qD