Russian Qt Forum
Ноябрь 26, 2024, 17:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Диалог не закрывается  (Прочитано 9023 раз)
once_again_abc
Гость
« : Октябрь 23, 2013, 07:53 »

Есть свой диалог от 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
Записан
_OLEGator_
Гость
« Ответ #1 : Октябрь 23, 2013, 08:45 »

Наверняка надо пробросить событие дальше, чтобы базовый класс его отработал:
Код
C++ (Qt)
void LoadProgressDialog::closeEvent( QCloseEvent* pEvent )
{
   Q_ASSERT( pEvent != 0 );
 
   if( pEvent->spontaneous() )
   {
       pEvent->ignore(); // Alt + F4
   }
   else
   {
       pEvent->accept();
       emit abort();
       QDialog::closeEvent(pEvent);
   }
}
Записан
once_again_abc
Гость
« Ответ #2 : Октябрь 23, 2013, 09:22 »

чьорт побьери! как же я мог забыть =) спасибо _OLEGator_!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.066 секунд. Запросов: 20.