QThread的使用总结

  Bradley T. Hughes 认为: QThread 应该被看做是操作系统线程的接口或控制点,而不应该包含需要在新线程中运行的代码。需要运行的代码应该放到一个QObject的子类中,然后将该子类的对象moveToThread到新线程中。
#include 
#include  
#include  
#include   
class Dummy:public QObject 
{  
    Q_OBJECT  
public:  
    Dummy(QObject* parent=0):QObject(parent) {} 
public slots:  
    void emitsig() 
    { 
        emit sig();
    } 
signals:  
    void sig(); 
}; 

class Object:public QObject
{  
    Q_OBJECT 
public: 
    Object(){} 
public slots:  
    void slot()  
    {   
        qDebug()<<"from thread slot:" <
另外:
在Qt4.3(包括)之前,run 是虚函数,必须子类化QThread来实现run函数。
而从Qt4.4开始,run默认调用QThread::exec()。这样一来不需要子类化QThread了,只需要子类化一个QObject就够了,这正是被Bradley T. Hughes推荐的方法。
终于看懂了,但不管怎么说,都应该是 QThread当初的设计导致的这种问题,而所有文档和例子中都没有提到该如何使用Qthread,进一步加剧了对QThread的这种误用。
 
 

你可能感兴趣的:(Qt)