关于继承QThread线程对象在哪个线程中的判断,挺简单,只要记住对象在哪个线程中被创建存在,自身实例对象就在哪个线程中。
在Qt中一个对象的槽函数在被信号触发调用的时候,槽函数在那个线程中执行取决于它的对象属于那个线程中
默认情况一下我们在代码中创建的对象都属于主线程,这个对象的槽函数在调用的时候,占用的都是主线程的时间,我们也可以将一个QObject类型的对象或子类对象通过moveToThread移动到子线程中去,这样当这个对象的槽函数被信号触发调用的时候,槽函数占用的就是子线程的时间。
这个方法会更改此对象及其子对象的线程关联性。如果对象有父对象,则不能移动该对象。
槽函数可以跟任意线程的任意信号建立连接
在Qt中,QThread类用于创建和管理线程。QThread类提供了一个run()方法,该方法定义了线程要执行的任务。然而,直接调用run()方法并不会在一个单独的线程中执行,而是在当前线程中执行。这是因为QThread的run()方法实际上是一个普通的成员函数,而不是开启一个新的线程。
为了在一个单独的线程中执行任务,应该调用QThread的start()方法。start()方法会在一个新的线程中执行run()方法,从而实现并发执行。这是因为start()方法会在内部创建一个新的系统线程,并将run()方法在该线程中执行。