抑制警告"未在main()线程中创建QApplication"

Nic*_*aus 8 c++ qt suppress-warnings qcoreapplication

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

这很好用,但它让Qt不高兴(我认为我担心我会尝试在主线程之外操作一个不起作用的GUI,但我不是),所以它会打印一个警告:WARNING: QApplication was not created in main() thread.

我想要压制那些否则将被打印到X11控制台的警告,并且最有可能导致我的用户输入一堆不必要的缺陷.但是,我只想压制这个错误,因为我qDebug出于某些合法目的使用并希望看到未来的警告.有没有办法做到这一点,就像某种Qt #pragma

编辑:

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

pep*_*ppe 10

出现这个问题的原因是你在创建QApplication之前接触了Qt API(在主线程中,或者只是在某个线程中).你不能这样做.特别是,你正在创建一种类型的QObject,它在Qt中设置st,Qt本身应该将其视为main线程.

在创建QApplication之前,您唯一允许使用的Qt API是在该场景中明确记录为安全的API.

所以:不要那样做.首先构建一个QCoreApplication,然后你就可以自由地去了.