我只是想通过以下源代码使用 QProcess 创建一个文件:
void Processmethod()
{
QDialog *ProcessMessage = new QDialog;
Ui::DialogProcessMessage Dialog;
Dialog.setupUi(ProcessMessage);
ProcessMessage->setModal(true);
ProcessMessage->setAttribute(Qt::WA_DeleteOnClose);
ProcessMessage->show();
processmethodONE();
}
void processmethodONE()
{
QString ProcessCommand = "w8 " + blablubli";
Prozess.setWorkingDirectory(Path); //QProcess "Prozess" is globaly defined
Prozess.setStandardOutputFile(Path); //in my class
Prozess.start(ProcessCommand);
QProcess::ExitStatus Status = Prozess.exitStatus();
if (Status == 0)
{
std::cout << "File created!" << std::endl;
}
}
这个过程从位于QString“Path”中的另一个文件创建一个新文件,让我称之为“PROFILE”(PRO for Problem :)。配置文件也已创建,但从未完成,我猜甚至 50% 的文件都没有完成。就在使用的时候
while(!Prozess.waitForFinished())
{
qApp->processEvents();
std::cerr << "Process Create PROFile running " << std::endl;
}
该文件已完全写入。此外,我尝试使用 QProcess finished(int) 信号来启动另一个方法并删除了 while 循环(它冻结了整个 GUI)。我在构造函数中声明了它:
connect(&Prozess, SIGNAL(finished(int)), this, (SLOT(processmethodTWO())));
但我想这行不通,因为第一个过程没有完全完成。哪里有问题?