抑制警告 "QApplication was not created in main() thread"

Suppress warning "QApplication was not created in main() thread"

我已经创建了一个基于 Qt 的网络库,用于 运行 不是 Qt 事件循环的应用程序,这些应用程序不一定是 Qt 应用程序。这是通过根据

的答案在线程中创建一个 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",但答案基本上只是代码审查,没有任何有意义的想法来抑制警告。

问题的出现是因为您在创建 QApplication 之前接触了 Qt API(在主线程中,或者只是在 some 线程中)。你不能那样做。特别是,您正在创建某种类型的 QObject,它在 Qt 中的某处设置 Qt 本身应视为 main 线程。

在创建 QApplication 之前允许使用的唯一 Qt API 是明确记录在该场景中安全的那些。

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