QObject: Cannot create children for a parent that is in a different thread. (Parent is QApplication(0x224c6c29260), parent's thread is QThread(0x224b3a8f7a0), current thread is QThreadPoolThread(0x224c6fc9780)怎么解决?
时间: 2023-09-05 09:07:34 浏览: 167
Qt的MoveToThread显示无法关闭在另一个线程的定时器
这个错误通常是由于在不同线程中创建了父对象导致的。解决方法是确保在同一线程中创建父对象和子对象。具体来说,可以尝试以下几种解决方法:
1. 在创建子对象之前,将其父对象移动到与子对象相同的线程中。可以使用QObject::moveToThread()函数来实现。
2. 在创建子对象时,指定其父对象为nullptr,然后在子对象创建完成后,再将其设置为正确的父对象。
3. 在创建子对象时,使用Qt::DirectConnection连接父对象的信号和子对象的槽函数,这样可以确保信号和槽函数在同一线程中执行。
希望这些方法可以帮助你解决问题。
阅读全文