目录
实际编程中,需要在一个程序中启动另外一个可以执行的exe文件,且需要保证后续程序打包之后,依然能够实现该功能。有几点需要注意:
1、程序中另外exe的路劲需要使用相对路径,后续打包程序换到别的电脑也能继续使用。
2、次程序需要在主程序关闭时候跟随关闭。
3、qt软件打包流程
一、新建空项目,添加可执行exe
如图我将一个可执行的通用串口exe放在了Release文件夹中;
代码实现:直接在构造函数中输入下面的代码,
process = new QProcess(this);
connect(process, &QProcess::errorOccurred, this, [&](QProcess::ProcessError error)
{
qDebug() << "Process error1:" << process->errorString();
});
QString projectPath = QCoreApplication::applicationDirPath();
QString executablePath = projectPath + "/UniversalSerialPort_boxed.exe.exe";
process->start(executablePath);
if (!process->waitForStarted())
{
qDebug() << "Failed to start the process:" << process->errorString();
}
else
{
qDebug() << "Process started successfully.";
// 可以在这里添加更多的逻辑来处理进程的运行
}
这是头文件:
程序运行后,界面如图:
但是此时,关闭主程序,次exe任然运行。
二、析构函数中,结束process
myProcess::~myProcess()
{
if (process->Running)
process->terminate();
}
添加后,程序就能正常关闭。
三、qt软件打包windeployqt
将项目的release文件中的所有东西赋值到一个新建的文件中。对于我来说,就是如下文件中的:
我在桌面新建一个文件夹1:
然后电脑打开,qt的工具:
首先在命令行中输入:C:——转到C盘
然后输入:cd C:\DeskTop\1 ——转到打包文件夹
最后输入:windeployqt myProcess.exe
然后发现文件夹中出现了许多东西:
这时候点击myprocess.exe程序,与在项目中运行一样,两个界面均出现。
接下来就可以利用打包工具进行打包了。