У меня есть следующий код:
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», содержимое диалогов отсутствует при активации показанного выше метода. Как я могу исправить эти проблемы? Где я не прав? Привет
Processmethod()
? 2) Почему вы считаете, что вам нужно создать QThread и переместить в него QProcess? И еще, почему вы тогда не запускаете новый QThread? 3) Вы используете этот глобальный QProcess для всех вашихprocessmethodX()
? - person jdi   schedule 25.03.2012