我正在Windows上从USB驱动器部署Qt应用程序。应用程序需要一段时间才能冷启动(~10s)。我想显示一些启动画面,以便在用户加载时保持耐心。
我首先尝试将启动画面放在主线程中,它们没有出现~10秒。无论缓存哪个库,都必须在启动闪屏之前加载。
然后我尝试将启动画面移动到另一个进程并使用QProcess::start()
启动它。再一次有大约10秒的延迟,然后我的应用程序和启动屏幕同时出现。
最后,我尝试使用QProcess::start()
启动启动画面流程启动我的主要应用程序。在这种情况下,启动屏幕在主应用程序之前显示得很好,但问题是我想要两件事1)主要应用程序比启动屏幕更长,2)主要应用程序通知启动屏幕它已完成加载通过stdout和QProcess:readAllStandardOutput()所以启动画面可以自杀。
QProcess::start
,QProcess::execute
和QProcess::startDetached
似乎无法做到这一点。使用startDetached
QProcess::readAllStandardOutput()
时,由于QProcess::startDetached
是静态的,因此无法正常工作。
使用QProcess::start
和QProcess::execute
时,我的主要应用程序不应该超过启动画面,奇怪的情况并非如此,我已经发布了一个单独的问题,询问为什么会这样(Attached child QProcess outliving parent )。由于文档让我相信这不应该发生,我不想依赖这种行为。
有谁知道如何安全地启动一个超过其父级并且可以与之通信的QProcess?