2015-10-22 1 views

Répondre

6

Ils sont tout à fait différents.

QThread * QObject::thread() const renvoie le fil dans lequel vit un QObject particulier.

QThread * QThread::currentThread() Renvoie un pointeur vers un QThread qui gère le thread en cours d'exécution.

class MyClass : public QObject 
{ 

}; 

int main(int argc, char **argv) 
{ 
    QApplication app(argc, argv); 

    MyClass * obj = new MyClass(); 
    QThread thread2; 
    obj->moveToThread(&thread2); 
    thread2.start(); 

    qDebug() << "The current thread is " << QThread::currentThread(); 
    qDebug() << "The thread2 address is " << &thread2; 
    qDebug() << "The object is in thread " << obj->thread(); 

    return app.exec(); 
} 

sortie de l'échantillon:

Le fil actuel est QThread (0x1436b20)
L'adresse thread2 est QThread (0x7fff29753a30)
l'objet est en fil QThread (0x7fff29753a30)

1

Ils sont pas la même chose, bien qu'ils pourraient retourner le même résultat.

1er retourne un fil que le QObject vit.

2ème retourne le fil en cours d'exécution.

4

Ils font deux choses différentes. QThread::currentThread() est une fonction statique qui renvoie un pointeur vers le thread dont il est appelé, c'est-à-dire. fil actuel.

QObject::thread() renvoie un pointeur sur le fil dans lequel cet objet vit.