1.头文件
class CameraTcp : public QThread
{
Q_OBJECT
public:
explicit CameraTcp(QObject *parent = nullptr);
void startTcp(const QString&ip,int port);
void stopTcp();
void onSendMsg(QByteArray dataArray);
protected:
void run() override;
protected slots:
void onConnect();
void onDisConnect();
void onReadMsg();
private:
QTcpSocket * m_cameraTcp = nullptr;
bool m_isThreaStopped;
bool m_isOkConect;
int m_iSendData;
int m_nSockPort;//端口
QString m_QStrSocketIp;//ip
};
2.cpp
CameraTcp::CameraTcp(QObject *parent) :QThread(parent) {
m_isThreaStopped = false;
m_isOkConect = false;
}
void CameraTcp::run() {
//要将mythread线程里的对象或指针创建,需要在run()函数里,创建或分配对象空间,否则出现跨线程使用
m_cameraTcp = new QTcpSocket();//法2:将这句及后面的,放在run中
//connect(m_cameraTcp, SIGNAL(readyRead()), this, SLOT(onReadMsg()), Qt::DirectConnection);//让接受函数在run子线程