为了账号安全,请及时绑定邮箱和手机立即绑定

如图,请问在Qt中run()函数该怎么写?

如图,请问在Qt中run()函数该怎么写?

潇潇雨雨 2022-03-10 11:07:46
有两个控制端,一个为主控制端,另一个为辅控制端,当主控端检测到某信息后将某信息传给辅控端,这样辅控端也能看到信息,想问下辅控端应该怎么接收主控端发来的信息并作出响应?下面是一个监听的头文件:**.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数据告诉了 主线程,主线程也需要一个信号槽来告诉另一个子线程;或者两个子线程之间建立一个信号槽



查看完整回答
反对 回复 2022-03-15
  • 1 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信