【发布时间】:2015-07-17 23:24:36
【问题描述】:
在我的 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();
【问题讨论】: