我有一个GUI程序,可以通过单击按钮启动cli程序。我想看到控制台窗口,不需要等到cli程序结束。所以我使用这样的代码:QProcess::startDetached("cmd.exe");单击按钮后我看不到控制台窗口。但是在任务管理器中看到cmd.exe进程。我尝试使用system()命令,但它在cli程序结束前卡住了我的应用程序。有没有办法让窗口可见? 最佳答案 这是预期的行为。至少在Windows中,startDetached等同于使用DETACHED_PROCESS调用CreateProcess标志,新进程不继承其父进程的控
是否可以在Windows中使用QProcess::startDetached()运行程序,同时隐藏其控制台窗口?QProcess::start()将隐藏控制台窗口,但QProcess::startDetached()不会,至少在默认情况下是这样。我可以使用QProcess::start()但是我必须等待子程序完成或者析构函数会强制终止它,我想立即关闭我的程序启动子进程后。 最佳答案 我遇到了完全相同的问题,无法以干净的方式解决它。我找到了2个选项:Hacky方法:子类QProcess并在启动进程后调用setProcessState(
如果我使用startDetached()启动QProcess,是否会收到完成信号?我正在尝试启动一个进程,但我需要能够在进程终止时获得一个事件。 最佳答案 不,当您使用startDetached时您无法获得信号,因为您没有对象。startDetached是一个静态函数,当您调用它时,进程会直接启动,而无需创建QProcess对象。因此,即使有信号,您也无法将其连接到任何东西,因为您没有可连接的对象。如果您想要一个信号,您应该创建一个QProcess对象,然后在其上调用start。然后,您将能够在流程完成时获得完成信号。