温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c++ - Suppress warning "QApplication was not created in main() thread"
c++ QT suppress-warnings qcoreapplication

c++ - 禁止警告“未在main()线程中创建QApplication”

发布于 2020-04-11 12:08:45

我已经创建了一个基于Qt的网络库,以用于未运行Qt事件循环的应用程序,以及未必以其他方式运行的Qt应用程序。通过QCoreApplication根据来自的答案在线程中创建实例,可以实现这一点是否可以在不调用QApplication :: exec()的情况下创建本地事件循环?

这可以完美地工作,但是会使Qt感到不安(我担心我会尝试在主线程之外操作GUI,但这是行不通的,但我不是),因此它显示警告:WARNING: QApplication was not created in main() thread

我想抑制该警告,否则该警告将被打印到X11控制台,并且很可能导致我的用户输入许多不必要的缺陷。但是,我只想抑制错误,因为我qDebug出于某些合法目的而使用它,并希望看到将来的警告。有没有办法像Qt这样#pragma呢?

编辑:

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

查看更多

提问者
Nicolas Holthaus
被浏览
267
peppe 2015-01-16 00:57

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

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

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