void OBJ_Loader::on_actionOpen_triggered()
{
QString filename = QFileDialog::getOpenFileName(this, tr("Open a File"));
if (!filename.isEmpty()) {
filepath=filename.toUtf8().constData();
command.append(filepath);
int TempNumOne=command.size();
for (int a=0;a<=TempNumOne;a++) { //get letters to a char list so it can be used by system();
cmd[a]=command[a];
}
openfile=true;
if (openfile) {
openfile=false;
system(cmd);
}
}
}
系统时(cmd);被称为QFileDialog窗口在系统命令完成之前不会关闭。我想知道点击打开后是否可以关闭搜索窗口。
答案 0 :(得分:1)
system
函数阻止事件循环:用户交互需要运行事件循环,并在代码未运行时运行。由于system
调用位于您的代码中,因此您不能简单地阻止您的进程。您需要使用QProcess
,因为它具有异步接口。 This answer提供了一个调用自身的进程的完整示例 - 所有进程都是从单个可执行文件中完成的。