私は次のコードを持っています:
void Processmethod()
{
QDialog *ProcessMessage = new QDialog;
Ui::DialogProcessMessage Dialog;
Dialog.setupUi(ProcessMessage);
ProcessMessage->setModal(true);
ProcessMessage->setAttribute(Qt::WA_DeleteOnClose);
ProcessMessage->show();
qApp->processEvents();
processmethodONE();
processmethodTWO();
processmethodTHREE();
}
void processmethodONE()
{
QString ProcessCommand = "w8 " + blablubli";
Prozess.setWorkingDirectory(Path); //QProcess "Prozess" is globaly defined
Prozess.setStandardOutputFile(Path); //in my class
QThread* thread = new QThread;
Prozess.moveToThread(thread);
Prozess.start(ProcessCommand);
while(!Prozess.waitForFinished(2000))
{
std::cerr << "Process running " << std::endl;
}
QProcess::ExitStatus Status = Prozess.exitStatus();
if (Status == 0)
{
std::cout << "File created!" << std::endl;
}
}
このソースコードでは、いくつかのプロセスが開始する前にポップアップダイアログを開こうとしています。問題は、ダイアログがクリックできないことですが、ダイアログ上に、実行中のメソッドを中止するためのボタンを作成したいと思います。ご覧のとおり、QThreadを使用して別のスレッドでプロセスを実行しようとしましたが、それでもダイアログをクリックできません。さらに、「application / x-executable」ファイルを使用してアプリケーション(GUI)を開くと、上記のメソッドをアクティブ化したときにダイアログの内容が失われます。これらの問題を解決するにはどうすればよいですか?私はどこが間違っていますか?あいさつ