Qt新手在这里:)。我目前正在Qt中使用popen
函数执行bash脚本,将输出重定向到我的应用程序中的textBrowser。当我将脚本作为资源添加到我的项目时,它似乎不再执行了?我使用:/myScript.sh
语法,然后尝试将我的参数添加为QStrings。任何建议将被认真考虑!
FILE *in;
char buff[512];
QString args = ":/myScript.sh" + <arguments>;
QByteArray ba = args.toLatin1();
char *temp = ba.data();
if(!(in = popen(temp , "r")))
{
exit(1);
}
while(fgets(buff, sizeof(buff), in)!=NULL)
{
ui->txtConsole->append(buff);
}
ui->progressBar->setValue(50); pclose(in);
使用Qt资源路径格式调用popen
将无法达到预期效果。
你有效地尝试调用是这样的:
popen(":/myScript.sh args", "r");
popen
函数对Qt资源系统和:/
语法一无所知。它期望第一个参数指向操作系统理解的磁盘上的路径。
两种选择:
:/
语法。它的运行脚本文件作为qt资源。你可以添加参数这个运行。
QStringList arg("-c");
QFile file(":/scriptFile.sh");
arg << file.readAll();
process->start("sh", arg);