使用Qt执行exe

时间:2014-09-26 18:02:50

标签: c++ qt user-interface exe

我正在尝试执行一个用VS创建的相对简单的exe(需要获得一些输入)。 使用QProcess:

QProcess *process = new QProcess(this);
QDir::setCurrent(entire_path);
process->start(exe_name, QStringList() << ""); // for empty args
事实是,当我关闭程序时,它会说我的程序(我正在尝试的程序) 执行),在进程中被销毁。 此外,如果我使用process-&gt; state(),它返回值2 - 这意味着它正在运行。 但是,事情是没有节目出现。

编辑:最终解决方案需要将IO重定向到文件。

编辑2:我也尝试从c ++类打开exe,并在Qt中使用该类,但它只是用这个exe打开cmd。如果我使用标准c ++ main中的那个类,IO来自文件,但是使用Qt,它只是不起作用。

我尝试打开另一个程序,比如calc,它运行起来了。 所以我不知道问题是什么......

顺便说一句,我找了这样的其他问题,没找到任何帮助......

1 个答案:

答案 0 :(得分:3)

您应该使用QProcess::startDetached

由于QProcess类被设计为QIODevice(它继承QIODevice),QProcess控件启动了本机进程并删除了QProcess实例导致本机进程终止。

<强>更新

根据Qt文档,要从Windows GUI流程检索输出,您可以使用QProcess::ProcessChannelMode QProcess::SeparateChannels。来自Qt文档:

  

注意:Windows故意禁止仅从GUI输出   应用程序继承控制台。这不适用于输出   重定向到文件或管道。转发仅GUI的输出   尽管如此,您仍必须使用SeparateChannels   并通过读取输出并将其写入来自行转发   适当的输出渠道。