在单独的线程中为新小部件设置公共父Qt小部件

时间:2013-12-28 02:02:40

标签: c++ multithreading qt qobject qtcore

我需要在单独的线程中创建一个小部件,并将MainWindow设置为父小部件。无法避免创建线程。

在新小部件的构造函数中,我指定了一个指向MainWindow的指针,但是给出了

  

QObject :: setParent:无法设置父级,新父级位于不同的线程

如何解决这个问题?

P.S。儿童小部件可能很多。

2 个答案:

答案 0 :(得分:3)

您无法在主线程

之外创建UI小部件

答案 1 :(得分:2)

这是不可能的。有关详细信息,请参阅以下代码参考:

QObject source code

特别是,你需要注意这个警告:

  

“qWarning(”QObject :: setParent:无法设置父级,新父级位于不同的线程中“);”

你根据你的问题得到了命令行,所以这是预期的。

正如警告所说,你需要确保父母在父母和孩子之间的同一个线程中发生。

  

无法避免创建线程。怎么解决这个问题?

我担心您需要重构代码,方法是将其从您的线程中移出到父级所在的位置或/并且根本没有单独的线程。

根据您问题中的信息,目前还不能多说,因为我们还不完全了解您的其他主题的功能。

希望这有助于解释它。