在我的 Qt 程序中,我有一个模式QDialogs
,旨在停止一切,直到它被解除后才继续执行代码。它适用于它所在的函数——我在下一行代码上放了一个断点,qDialog::exec()
直到我关闭对话框后它才会中断。
但是,QTimer
在其超时时有一个连接到插槽,即使模式对话框启动并执行其插槽中的代码,它也会继续运行。
我想我可以在显示modal dialog
. 但是,可能存在对话框与计时器完全不同的类的情况。有没有办法真正停止程序的执行,直到QDialog
被解雇?
例子:
QTimer* pTestTimer = new QTimer( this );
connect( pTestTimer , SIGNAL( timeout() ), this, SLOT( timerSlot() ) );
//Slot code elsewhere
void cMyClass::deleteMeTimerSlot()
{
qDebug() << "See me during modal?";
}
//starting a modal dialog
pTestTimer->start( 1000 );
QDialog* pModalDlg = new QDialog( this, Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint );
pModalDlg->setModal(true);
pMOdalDlg->exec();
输出仍然显示“在模态期间见我?” 而在exec()
;