C ++ QT QFileDialog не закрывается при использовании system () в инициируемом действии

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 окно не закрывается, пока не завершится системная команда. Я хотел бы знать, смогу ли я закрыть окно поиска после нажатия кнопки «Открыть».

2

Решение

system Функция блокирует цикл событий: взаимодействие с пользователем требует запуска цикла событий, и он запускается, когда ваш код не работает. Так как system Вызов в вашем коде, вы не можете просто заблокировать ваш процесс. Вам нужно использовать QProcess так как имеет асинхронный интерфейс. Этот ответ предоставляет полный пример одного процесса, вызывающего себя — все это делается из одного исполняемого файла.

1

Другие решения


По вопросам рекламы [email protected]