gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 18:28:07 25 4
gpt4 key购买 nike

我已经创建了一个基于 Qt 的网络库,用于不运行 Qt 事件循环的应用程序,这些应用程序不一定是 Qt 应用程序。这是通过根据 Is it possible to create local event loops without calling QApplication::exec()? 的答案在线程中创建一个 QCoreApplication 实例来实现的。

这工作得很好,但它让 Qt 不高兴(我想它担心我会尝试在主线程之外操作一个 GUI,这不会工作,但我没有),所以它打印一个警告: 警告:QApplication 不是在 main() 线程中创建的

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

编辑:

之前在这里问过类似的问题:Qt console application "WARNING: QApplication was not created in the main() thread" ,但答案基本上只是代码审查,没有任何有意义的想法来抑制警告。

最佳答案

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

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

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

关于c++ - 抑制警告 "QApplication was not created in main() thread",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27963697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com