有两个控制端,一个为主控制端,另一个为辅控制端,当主控端检测到某信息后将某信息传给辅控端,这样辅控端也能看到信息,想问下辅控端应该怎么接收主控端发来的信息并作出响应?下面是一个监听的头文件:**.cpp里面一段mNetSend = new NetSend(mSendPort, mHostAdd);mNetSend->start();mNetListen = new NetListen(mListenPort);mNetListen->start();connect(mNetListen, SIGNAL(recieved(QByteArray*)), this, SLOT(handleMsg(QByteArray*)));想问下run()函数应该怎么写?写什么内容?现在主控端打开后有信息来时辅控端没反应是怎么回事?本人刚开始接触什么都不懂,请高手赐教。这是netListen的头文件
1 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
看你的样子,NetListen应该是继承QThread吧,如果是继承QThread那么你这么写是错误的。
应该这样:NetListen继承自QObject,
1.另起一个类Thread继承自QThread,在你的Thread的run里面:
void Thread::run(){
netlisten = new NetListen();
connect(........................);
exec();
}
2.或者不需要写Thread,直接创建一个QThread对象tread,然后NetListen->moveToThread(thread);
**.cpp里面一段 QThread *threadA = new QThread; mNetSend = new NetSend(mSendPort, mHostAdd); threadA->start(); mNetSend->moveToThread(threadA); QThread* threadB = new QThread; mNetListen = new NetListen(mListenPort); threadB->start(); mNetListen->moveToThread(threadB); connect(mNetListen, SIGNAL(recieved(QByteArray*)), this, SLOT(handleMsg(QByteArray*))); mNetListen继承自QObject; **.cpp既不是mNetSend,也不是mNetListen,而是一个主线程,那两个是两个不同的子线程。你的这个信号槽连接是将mNetListen数据告诉了 主线程,主线程也需要一个信号槽来告诉另一个子线程;或者两个子线程之间建立一个信号槽
添加回答
举报
0/150
提交
取消