Fortran Coder

查看: 7260|回复: 4
打印 上一主题 下一主题

[混编] 关于QT 调用外部.exe没有出现命令行窗口的问题

[复制链接]

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
楼主
发表于 2019-10-10 19:03:29 | 显示全部楼层
startDetached 可以的

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2019-10-16 11:57:30 | 显示全部楼层
1. 一般人用GUI调用Console,都不想看到命令行出现。比如Qt Creator 调用 mingw-g++ 就是这样
如果你想显示输出,你可以用 QTextEditor 检测 QProcess 的标准输出。
了解一下 QProcess 的 readyReadStandardOutput 信号和 readAllStandardOutput 成员函数。
在界面上显示输出,比弹出一个 Console 界面更友好。

2. 如果你确实想看见Console界面,可以试试调用
"cmd /k Consoleadd.exe"
注意路径问题。不小心的话,会找不到路径,并且没有任何提示。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
板凳
发表于 2019-10-16 12:01:13 | 显示全部楼层
大概的思路如代码如下:
[C++] 纯文本查看 复制代码
pro = new QProcess();
  pro->setProgram(fname);
  pro->setWorkingDirectory(globals->gAppDataPath+"\\temp\\");
  pro->setNativeArguments("命令行参数");//如果有命令行参数,可以这样
  pro->setStandardInputFile(qApp->applicationDirPath().append("\\CMDRedirect.lst"));//如果有标准输入可以这样
  connect(pro, SIGNAL(readyReadStandardOutput()), this, SLOT(on_cmdOutput()));
  connect(pro, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(on_proc_finished(int, QProcess::ExitStatus)));
  pro->start();
  bOK = pro->waitForStarted(1000);
  pro->waitForFinished(2000); //可以等2秒完成。也可以不等


void YourClass::on_cmdOutput(){
  QString s(pro->readAllStandardOutput());
  ui->textEditor->append(s);
}
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-8 17:09

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表