亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如圖,請問在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 關注
  • 266 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號