我是qt的新手,正在尝试实现客户端服务器程序。在客户端,我想从一个线程(主线程)写入,并从另一线程(主线程)读取套接字,但是我收到以下通知。
QSocketNotifier:无法从另一个线程启用或禁用套接字通知程序
[2019年1月8日,星期二,15:21:19] SW更新文件已转移“
它确实读取套接字,但是给出了此通知。我需要担心还是忽略它?
代码如下。
tcp_client.h
namespace Ui {
class TCP_Client;
}
class TCP_Client : public QMainWindow
{
Q_OBJECT
public:
explicit TCP_Client(QWidget *parent = nullptr);
MyThread *mThread;
~TCP_Client();
private slots:
void on_pushButton__SW_Update_clicked();
public:
Ui::TCP_Client *ui;
TCP_clientClass *client;
};
tcp_client.cpp
void on_pushButton__SW_Update_clicked{
/*some work done here*/
client->tcpSocket->write(buffer,16);
mThread = new MyThread(client->tcpSocket,this);
mThread->start();
}
mythread.h
class MyThread : public QThread
{
Q_OBJECT
public:
explicit MyThread(QTcpSocket *ID, QObject *parent =0);
void run ();
bool Stop;
signals :
void NumberChanged(QByteArray a);
public slots :
private:
QTcpSocket *socket1;
};
mythread.cpp
MyThread::MyThread(QTcpSocket *ID,QObject *parent) : QThread(parent)
{
socket1 = new QTcpSocket();
socket1=ID;
}
void MyThread::run()
{
QByteArray a;
qDebug()<<"Inside running thread";
socket1->waitForReadyRead(-1);
a= socket1->readAll();
qDebug() << a;
}
基本上,我是在按下按钮时编写的,并且在内部创建了一个线程,以便它可以读取服务器发送的数据。