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