次のソースコードで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「パス」にある別のファイルから新しいファイルを作成します。これを「PROFILE」と呼びましょう (問題の場合は PRO:)。プロファイルも作成されますが、完成することはありません。ファイルの 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())));
しかし、最初のプロセスが完全に終了していないため、これはうまくいかなかったと思います。問題はどこだ?