简而言之 - 您要么需要合并两个事件循环,要么使用单独的线程并手动同步事件处理程序。
您粘贴的第一个链接显示了如何处理自上次调用以来发生的 libuv 事件。如果没有调度事件(因为它只会继续轮询),则声明将使用〜100%的CPU。
第二个链接(qt-event-dispatcher-libuv)是我为解决相同问题而创建的一个项目。但是,它确实如您所描述的那样工作 - 通过使用 libuv 来处理 Qt 的事件循环(并通过这样做 - 将两个事件循环合并为一个)。
要使用它,您只需要使用http://qt-project.org/doc/qt-5/qcoreapplication.html#setEventDispatcher在您的应用程序中注册事件调度程序。使用此库的示例 - https://github.com/svalaskevicius/qtjs-generator/blob/master/src/runner/main.cpp#L179
使用这种方法仍有一个问题——虽然它在 linux 上运行良好,但在 OS X 上存在一些问题,因为 Qt 的 Cocoa 平台支持插件处理了一些 Cocoa 的事件循环操作,并且也没有提供很好的 API 来合并它(目前它更新它们一个它在一个小的超时后释放,所以有一些(几乎没有?)明显的延迟来处理 GUI 事件) - 我计划移植平台支持插件以便能够集成它,但那仍然在未来。而且我还没有在 Windows 上测试过它:)
另一种解决方案可能是尝试从我已经完成的另一个方向合并两个循环 - 而不是让 Qt 使用 libuv,可以提供使用 Qt 处理程序的 libuv api - 尽管它也需要大量工作.
如果我可以提供更多信息,请告诉我。
问候,