如何启动一个超过其父级并且可以与之通信的QProcess?

时间:2016-03-22 23:47:24

标签: c++ qt ipc qprocess

我正在Windows上从USB驱动器部署Qt应用程序。应用程序需要一段时间才能冷启动(~10s)。我想显示一些启动画面,以便在用户加载时保持耐心。

我首先尝试将启动画面放在主线程中,它们没有出现~10秒。无论缓存哪个库,都必须在启动闪屏之前加载。

然后我尝试将启动画面移动到另一个进程并使用QProcess::start()启动它。再一次有大约10秒的延迟,然后我的应用程序和启动屏幕同时出现。

最后,我尝试使用QProcess::start()启动启动画面流程启动我的主要应用程序。在这种情况下,启动屏幕在主应用程序之前显示得很好,但问题是我想要两件事1)主要应用程序比启动屏幕更长,2)主要应用程序通知启动屏幕它已完成加载通过stdout和QProcess:readAllStandardOutput()所以启动画面可以自杀。

QProcess::startQProcess::executeQProcess::startDetached似乎无法做到这一点。使用startDetached QProcess::readAllStandardOutput()时,由于QProcess::startDetached是静态的,因此无法正常工作。

使用QProcess::startQProcess::execute时,我的主要应用程序不应该超过启动画面,奇怪的情况并非如此,我已经发布了一个单独的问题,询问为什么会这样(Attached child QProcess outliving parent )。由于文档让我相信这不应该发生,我不想依赖这种行为。

有谁知道如何安全地启动一个超过其父级并且可以与之通信的QProcess?

0 个答案:

没有答案