Qt QObject Cannot create children for a parent that is in a different thread
Posted DreamLife.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt QObject Cannot create children for a parent that is in a different thread相关的知识,希望对你有一定的参考价值。
Qt QObject Cannot create children for a parent that is in a different thread
文章目录
关键字:
关键字1
、
关键字2
、
关键字3
、
关键字4
、
关键字5
内容背景:
最近项目终于切到Linux下开发了,所以最近的记录都是发生在
Debian 10
以及Arm Debain 10
下,Qt
版本5.12.3
。这几天真是问题多多,收获满满,不过目前阶段仅仅停留在解决问题,至于原理性的东西,还得慢慢消化。最近好多问题都是直接群里问大神,感谢各位大神助我成长。
摘要
今天在搞代码的时候,触发了新的不问题,也不是BUG,就是在控制台有红色的日志输出,红色,那应该就是比较重要的内容了,所以要重点照顾一下。报错内容如下
QObject Cannot create children for a parent that is in a different thread
1 问题分析
这句这外国语言描述,就是无法为不同线程中的父级创建子级
,说了个寂寞,结合代码来看你,其实就是我有一个线程,在线程里面用到一个变量吧,这个变量其实是在主线程中创建的,子线程中虽然可以使用,但是其实还是操作的主线程的对象。就是这个意思,结合代码,这个就是我自己写的一个音频类里面。我使用了movetoThread的方式,所以我在线程的构造函数里面创建了变量,但是你,在我线程构造函数调用的时候,其实线程还没有创建。所以就有了子线程调用主线的问题,就出现了这共色的内容。
2 解决问题
知道了问题在哪里,就很好解决,那就把变量放在线程里面分配资源就好, 如下,把它送构造函数移动到线程启动槽函数里面就可以
以上是关于Qt QObject Cannot create children for a parent that is in a different thread的主要内容,如果未能解决你的问题,请参考以下文章
QT 线程:Getting QObject::startTimer: timers cannot be started from another thread 警告
Qt笔记-解决QObject::startTimer: Timers cannot be started from another thread
解决qt程序运行时的cannot create Qt for Embedded Linux data directory: /tmp/qtembedded-0
Cannot create a win event notifier without a QEventDispatcherWin32问题解决个人整理