QThread使用心得

假设只有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 构造函数中加一句

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 ();

欢迎讨论

猜你喜欢

转载自my.oschina.net/u/2533477/blog/2875183