坑:
QProcess* p=new QProcess(this);
使用p->setArguments(QStringList()<<“aa”<<"bb")并不能真正给外部程序传递参数,虽然p->arguments()的输出是("aa", "bb")
可以使用p->startDetached("update.exe",QStringList()<<“aa”<<"bb");传递参数,虽然p->arguments()输出的参数为空
验证:
自己写的程序main函数中加入log输出
int main(int argc, char *argv[])
{
qInstallMessageHandler(customMessageHandler);
qDebug("进入main函数");
qDebug(std::to_string(argc).c_str());
for (int i=0;i<argc;i++){
qDebug(argv[i]);
}
。。。。。
打包程序
使用文章开头两种方法调用程序
第一种方法日志打印:
Debug: 进入main函数
Debug: 1
Debug: update.exe
Debug: 参数值无效,程序啊启动失败
第二种方法日志打印
Debug: 进入main函数
Debug: 4
Debug: update.exe
Debug: E:\aaa\bbb
Debug: C:\Users\guagua\AppData\Local\Console-5G
Debug: Console_5Gv0.exe
Debug: 进入程序
总结:QProcess这个模块是真的恶心,恶心人。坑是真的多,学习Qt以来,浪费你爹时间最多的一个模块,真的花很多时间调试他。这个模块真的是垃圾,并不能想C语言中system函数可以打开其他txt等文件类型。