最近抽空研究了下QThread,使用起来方式多种多样,但是在使用的同时,我们也应该去了解Qt的线程它到底是怎么玩儿的. Qt的帮助文档里讲述了2种QThread的使用方式,一种是moveToThread,另一种是继承QThread实现run方法,下面我们分别来分析下 一.moveToThread 首先我们来先分析move这种方式,他的使用可能像下面这样 class Worker : public QObject { public slots: void doWork(const QString
简单的说,每个QObject的对象,都和某个创建对象所在的线程关联,如果把对象通过 moveToThread 移动到其他线程,这个对象不能有父对象,否则会出现 QObject::moveToThread: Cannot move objects with a parent A QObject instance is said to have a thread affinity, or that it lives in a certain thread. When a QObject receiv
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义.例如要使用QApplication类,则需要在程序中添加" #include <QApplication>" QApplication类用于管理应用程序范围内的资源.其构造函数需要main函数的argc和argv作为参数. widget被创建时都是不可见的(always created hidden).widget中可容纳其它widget. Qt中的widget在有用户行为或状态改变时会emit sig
QThread Class 详细描述 QThread 类提供一个平台无关的方法来管理线程. 一个QThread对象管理一个程序中的控制线程.QThread在run()中开始执行任务.默认地,run()通过调用exec()开始事件循环,并且在线程中运行Qt事件循环. 你可通过使用QObject::moveToThread()将worker对象移到线程中来使用worker对象. class Worker : public QObject { Q_OBJECT public slots: void d