以前写qt程序的时候代码都是在一个gui线程中运行的,若是遇到一些比较耗时的操做会使界面失去响应,那么就须要把这些耗时的操做放到另外一个线程中去,而后经过信号和槽与主界面进行通讯。编程
若是百度的话,大部分结果都是从QThread派生一个类,而后重写run(),可是这种方法只有在run()中的代码是运行在新线程中的,其余部分仍然在主线程中多线程
下面介绍另外一种方法。
函数
从Qobject继承一个类(例如my_thread),将线程中要用到的东西定义在这个类中,函数用槽函数(使用信号槽机制调用,不用槽函数直接调用不会在新线程中执行),ui
而后在GUI线程中this
QThread *Mthread = new QThread(this);spa
my_thread *mthread = new my_thread;线程
my_thread->moveToThread(Mthread);继承
Mthread->start;qt
这样,my_thread中全部的东西就都在新线程了,经过链接信号和槽就能够调用里面的函数了thread
Qt多线程高级编程
待续......