Есть свой диалог от QDialog. В нем реализую closeEvent
void LoadProgressDialog::closeEvent( QCloseEvent* pEvent )
{
Q_ASSERT( pEvent != 0 );
if( pEvent->spontaneous() )
{
pEvent->ignore(); // Alt + F4
}
else
{
pEvent->accept();
emit abort();
}
}
Из рабочего потока отправляю сообщение:
QCloseEvent* pCloseEvent = new QCloseEvent();
QCoreApplication::postEvent( m_pLoadProgressDialog, pCloseEvent );
Сообщение успешно приходит, получает accept... и все. Окно не исчезает. Добавил принудительно вызов close() - работает, но не нравится. Вопрос - почему так происходит?
При этом, если QCloseEvent приходит от кнопки, то так же выполняется блок else { ... } и окно закрывается!
версия 4.6.2