禁止显示警告"QApplication was not created in main() thread"



我创建了一个基于Qt的网络库,用于不运行Qt事件循环的应用程序,这些应用程序不一定是Qt应用程序。这是通过在线程中创建一个QCoreApplication实例来实现的,该答案来自是否可以在不调用 QApplication::exec() 的情况下创建本地事件循环?

这非常有效,但它使 Qt 感到不安(我认为它担心我会尝试在主线程之外操纵 GUI,这不起作用,但我不是),因此它打印了一个警告:WARNING: QApplication was not created in main() thread .

我想抑制该警告,

否则该警告将打印到 X11 控制台,并且很可能导致我的用户输入一堆不必要的缺陷。但是,我想抑制此错误,因为我将qDebug用于某些合法目的并希望看到未来的警告。有没有办法做到这一点,比如某种Qt #pragma

编辑:

之前有人问过一个类似的问题:Qt控制台应用程序"警告:QApplication不是在main()线程中创建的",但答案基本上只是一个代码审查,没有任何有意义的想法来抑制警告。

出现此问题是因为您在创建QApplication之前正在接触Qt API(在主线程中,或仅在某个线程中)。你不能这么做。特别是,你正在创建一个某种类型的QObject,它在Qt中设置了Qt本身应该认为是main线程的地方。

在创建QApplication之前,您唯一可以使用的Qt API是明确记录为在这种情况下安全的API。

所以:不要那样做。首先构建一个 QCoreApplication,然后您就可以自由了。

最新更新