2014-10-13 6 views
0

Мне нужно запустить внешнее приложение, нажав кнопку и заблокировав основное приложение.Нажатие кнопки qpushbutton при qprocessevent waitforfinished

Используя приведенный ниже код, когда основное приложение заморожено, кнопка на нем, похоже, помещает событие (или основное приложение) в очередь.

Когда основное приложение возвращается, кнопка запускает относительное событие числом раз, которое было нажато, когда оно было отключено.

Я надеюсь, что вы не нашли.

QApplication::setOverrideCursor(Qt::WaitCursor); 
ui.ProgramPushButton->blockSignals(true); 
ui.ProgramPushButton->setEnabled(false); 
QApplication::processEvents(); 

process.setWorkingDirectory(external_program_workingdir); 

process.start(file); 

process.waitForFinished(-1); 

ui.ProgramPushButton->blockSignals(false); 
ui.ProgramPushButton->setEnabled(true); 
QApplication::restoreOverrideCursor(); 

что я пропустил?

ответ

0
QApplication::setOverrideCursor(Qt::WaitCursor); 
ui.ProgramPushButton->blockSignals(true); 
ui.serviceProgramPushButton->setEnabled(false); 

Похоже, что функция blockSignals должна быть применена к ui.serviceProgramPushButton, а не ui.ProgramPushButton

+0

да жаль .. я редактировал код, прежде чем отправлять его. – SNC

+0

Хорошо, вы пытались запустить QApplication :: processEvents(), когда процесс завершается, прежде чем разблокировать сигналы и поменять кнопку? – TheDarkKnight