Qt中次线程里创建对象,出现Cannot create children for a parent that is in a different thread

在使用Qt线程时, 在线程里跑上一个定时器。定时器时间超限时触发信号,传递给主线程做其他的事情。

继承QThread后在实现run()函数后,m_pTimer = new QTimer(this);   new一个定时器对象,并传入this指针---注意此时的this指针是主线程的

但每次创建线程时会出现以下提示:

QObject: Cannot create children for a parent that is in a different thread


传入this指针------相当于在子线程里为主线程建立了对象,所以出现跨线程警告


另外QT中继承Qthread类后,在类中定义的对象或或对象的指针都是属于主线程的。次线程正真意义上的实体内容实在实现run()函数里。

所以,要将mythread线程里的对象或指针创建,需要在run()函数里,创建或分配对象空间。


你可能感兴趣的:(Qt中次线程里创建对象,出现Cannot create children for a parent that is in a different thread)