09.QT应用程序启动外部exe文件

     根据QT帮助文档,写了一个小测试案例,在QT应用中,启动 一个外部的exe程序,目前此exe使用的QT编译形成,后期改用C#形式的exe文件。

     

#include "QProcessDemo.h"
#include <QPushButton> 
#include <QProcess> 
#include <QMessageBox>
#include <QDir>

QProcessDemo::QProcessDemo(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	connect(ui.startBtn, SIGNAL(clicked(void)), this, SLOT(startNewExe(void)));
	connect(ui.testBtn, SIGNAL(clicked(void)), this, SLOT(testBtn(void)));

}

QProcessDemo::~QProcessDemo()
{
  delete[] myProcess;
}

void QProcessDemo::startNewExe(void)
{
	

	QString path = QCoreApplication::applicationFilePath();

	QMessageBox::information(this, QStringLiteral("测试启动exe"), path);

	//方案1
	//启动新的exe运行, 路径中不能有空格,
//	QString program = QStringLiteral("F:/fabu/01 发布demo测试/ReleaseApp/ReleaseApp.exe");  //此路径就有问题
	QString program = QStringLiteral("D:/ReleaseApp/ReleaseApp.exe");
    myProcess = new QProcess(this);
	myProcess->start(program);

#if 0
	//方案2,此方式,会造成阻塞
	QProcess process(this);
	process.start("D:/ReleaseApp/ReleaseApp.exe");
	process.start();
	process.waitForStarted(); //等待程序启动
	process.waitForFinished();//等待程序关闭
#endif

}


void QProcessDemo::testBtn(void)
{
	QMessageBox::information(this, QStringLiteral("测试原app"), QStringLiteral("原app正常运行"));
}

## 带参数调用exe

	QProcess process(this);
	QStringList arguments;

	arguments << domain_pddl << problem_pddl;
	process.start(smtplan_exe, arguments);
	process.waitForFinished();

	QByteArray qByteRead = process.readAllStandardOutput();
	QString  tmpStr = QString::fromLocal8Bit(qByteRead);

 

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangshui516

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值