假设只有main线程和子线程child函数
class child :public QThread { Q_OBJECT public: child ( QThread* parent = nullptr ){ moveToThread ( this ); } virtual void run (){ exec (); } public slots : void Recv( LPVOID param ){ int i = 0; } };
1. Recv默认是在main中执行,要想使Recv在child中执行,只需在child 构造函数中加一句this
moveToThread ( this );
2. 还有种方法是子类化一个QObject对象,而后把对象move到child中:线程
class obj:public QObject { Q_OBJECT public slots : void RecvParam ( LPVOID param ){ int i = 0; } }; child* thd = new child; obj Obj; Obj.moveToThread ( thd ); thd->start ();
欢迎讨论code