qt 线程接收线程 moveToThread 特性
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt 线程接收线程 moveToThread 特性相关的知识,希望对你有一定的参考价值。
qt 线程槽函数
假定一个线程继承QThread,那么这个线程的槽函数接收信号启动后,是在线程里执行否,答案并不是,只有run 函数才是执行在线程中的,要让槽函数执行在线程中,必须使用qt moveToThread函数,并且要正确的使用方法,下面是正确的使用方法。
代码示例
#include <QtCore/QCoreApplication>
#include <QtCore/QObject>
#include <QtCore/QThread>
#include <QtCore/QDebug>
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:" <<QThread::currentThreadId();
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<"main thread:"<<QThread::currentThreadId();
QThread thread;
Object obj;
Dummy dummy;
obj.moveToThread(&thread);
QObject::connect(&dummy, SIGNAL(sig()), &obj, SLOT(slot()));
thread.start();
dummy.emitsig();
return a.exec();
}
#endif
以上是关于qt 线程接收线程 moveToThread 特性的主要内容,如果未能解决你的问题,请参考以下文章