QThread

关于继承QThread线程对象在哪个线程中的判断挺简单只要记住对象在哪个线程中被创建存在自身实例对象就在哪个线程中
在Qt中一个对象的槽函数在被信号触发调用的时候槽函数在那个线程中执行取决于它的对象属于那个线程中

默认情况一下我们在代码中创建的对象都属于主线程这个对象的槽函数在调用的时候占用的都是主线程的时间我们也可以将一个QObject类型的对象或子类对象通过moveToThread移动到子线程中去这样当这个对象的槽函数被信号触发调用的时候槽函数占用的就是子线程的时间
这个方法会更改此对象及其子对象的线程关联性如果对象有父对象则不能移动该对象

槽函数可以跟任意线程的任意信号建立连接

在Qt中QThread类用于创建和管理线程QThread类提供了一个run()方法该方法定义了线程要执行的任务然而直接调用run()方法并不会在一个单独的线程中执行而是在当前线程中执行这是因为QThread的run()方法实际上是一个普通的成员函数而不是开启一个新的线程

为了在一个单独的线程中执行任务应该调用QThread的start()方法start()方法会在一个新的线程中执行run()方法从而实现并发执行这是因为start()方法会在内部创建一个新的系统线程并将run()方法在该线程中执行