我已经创建了一个基于Qt的网络库,用于未运行Qt事件循环的应用程序,而且不一定是Qt应用程序。通过根据Is it possible to create local event loops without calling QApplication::exec()?
的答案在线程中创建QCoreApplication
实例,可以实现这一点
这很好用,但它让Qt不高兴(我认为它会担心我会尝试在主线程之外操作一个不起作用的GUI,但我不是),所以它会打印一个警告:WARNING: QApplication was not created in main() thread
。
我想抑制那些否则会被打印到X11控制台的警告,并且最有可能导致我的用户输入一堆不必要的缺陷。但是,我只想暂时解决 THIS 错误,因为我将qDebug
用于某些合法目的,并希望看到未来的警告。有没有办法做到这一点,比如某种Qt #pragma
?
修改
此前有人问过类似的问题:Qt console application "WARNING: QApplication was not created in the main() thread",但答案基本上只是一个代码审查,没有任何有意义的想法来抑制警告。
答案 0 :(得分:9)
出现问题是因为在创建QApplication之前,您正在接触Qt API(在主线程中,或仅在某些线程中)。你不能这样做。特别是,你正在创建某种类型的QObject ,它在Qt中设置st,Qt本身应该将其视为main
线程。
在创建QApplication之前,您唯一允许使用的Qt API是明确记录为在该场景中安全的Qt API。
所以:不要那样做。 首先构建一个QCoreApplication ,然后你可以自由地去。