我需要两个事件循环:一个用于 Windows服务(或 Linux守护程序),另一个用于 Qt 事件队列datename()
(或QCoreApplication::exec()
甚至QApplication::exec()
)。
我可以在单线程中同时使用两者吗?或者我应该为其中一个创建一个单独的线程?在后一种情况下,如何在QEventLoop::exec()
和" window" /" service"之间安排交互过程。线程?
Windows服务需要Message only window以及窗口过程来接收和处理来自 Windows 或服务控制处理程序功能。我希望能够处理来自 Windows 和 Qt 特定事件的两种事件。
我可以使用QObject
来处理来自 Windows 的事件之间的 Qt 事件吗?它如何影响服务响应能力和QEventLoop/QCoreApplication/QApplication::processEvents
响应能力?
答案 0 :(得分:1)
Qt事件循环在所有平台上集成本机通知/事件。 nativeEventFilter
是您在希望时对原生事件做出反应的方式。
答案 1 :(得分:1)
尝试使用QtService库。 QtService对于开发Windows服务和Unix守护进程非常有用: https://github.com/qtproject/qt-solutions/tree/master/qtservice
或者,您可以像在QtService库中一样自己实现: https://github.com/qtproject/qt-solutions/blob/master/qtservice/src/qtservice_win.cpp#L556