我正在尝试将 Qt 用作库(类似于this),因为我想在一些当前非 Qt 应用程序中重用 Qt 类,并在共享库中作为跨平台胶水。一切都是非 GUI 的。
DirectConnection可以轻松避免一些问题,一些可以通过私有事件循环解决,甚至可以在线程中运行假QCoreApplication并且它可以工作(最后的手段)。
我想知道哪些模块依赖于QCoreApplication的运行实例,没有它就无法工作。
一些 Qt 模块(在QtCore中)确实需要一个QCoreApplication实例才能正常运行。例如QTimer依赖QCoreApplication来调度定时器事件。我正在阅读 QtConcurrentRun 的文档,它似乎依赖于QThreadPool的全局实例,我将尝试查看应用程序执行是否至关重要,或者该实例是否是在首次访问时创建的,或者可能不是。
我将学习QCoreApplicationPrivate源代码(目前是 Windows 和 Linux),但非常感谢任何正确方向的提示。
核心应用程序的其他功能依赖项是什么?请注意,它可能取决于操作系统。
Edit1:感谢 Kuba 的回答,看来QCoreApplication事件循环对于调度计时器和套接字事件来说不是必需的。所以一些QtCore模块需要QCoreApplication的实例,但不需要有一个正在运行的应用程序事件循环。