当qprocessevent等待完成时按qpushbutton

时间:2014-10-13 12:11:15

标签: qt qprocess qpushbutton

我需要通过按下按钮来运行外部应用程序并冻结主应用程序。

当主应用程序被冻结时使用下面的代码,它上面的按钮似乎将事件(或主应用程序)排入队列。

当主应用程序返回可用时,按钮会运行相对事件,即禁用它时单击的次数。

我希望你不肯。

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();

我想念的是什么?

1 个答案:

答案 0 :(得分:0)

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

看起来blockSignals函数应该应用于 ui.serviceProgramPushButton ,而不是 ui.ProgramPushButton