Since the screen is a device, only one stream at a time can access it. Qt has assigned its "GUI thread" to be the only one to do this.
QObjects, such as QWidgets, are associated with the thread that created them to keep track of all this. If the hierarchy of objects is associated with one thread, and you are trying to change the parent to an object in another thread, then the problem arises ... it cannot be resolved, since children may depend on this particular thread for work.
Eg. If the parent of the object is already set, you cannot use moveToThread (object);
source share