Russian Qt Forum

Qt => Вопросы новичков => Тема начата: xintrea от Июнь 20, 2016, 21:21



Название: Метод event() получает далеко не все события. Почему?
Отправлено: xintrea от Июнь 20, 2016, 21:21
Имею класс ExecuteCommand, расширенный от QDialog.

Переопределил в нем метод event():

Код:
// Переопределенный метод, вызываемый при обработке событий
bool ExecuteCommand::event(QEvent *event)
{
  qDebug() << "ExecuteCommand::event:" << event->type();

  if(event->type()==QEvent::Close)
  {
    qDebug() << "Emit signal dialogHide";
    emit dialogHide();
  }

  return QDialog::event(event);
}

Когда создается окно, работает, и закрывается, в логе видны только три события, при начале создания окна:

Код:
21:23:51 [DBG] ExecuteCommand::event: 74
21:23:51 [DBG] ExecuteCommand::event: 75
21:23:51 [DBG] ExecuteCommand::event: 170

И все.

Вопрос: должны ли в логе появляться и другие события, например, когда окно закрывается? (мне нужно отследить hide или close, в общем, событие закрытия окна). Почему никаких других событий, кроме вышеперечисленных трех, не видно?


Название: Re: Метод event() получает далеко не все события. Почему?
Отправлено: kambala от Июнь 20, 2016, 22:19
обычно события перехватываются через eventFilter()


Название: Re: Метод event() получает далеко не все события. Почему?
Отправлено: Igors от Июнь 21, 2016, 05:57
Вопрос: должны ли в логе появляться и другие события, например, когда окно закрывается?
Да, должны

Почему никаких других событий, кроме вышеперечисленных трех, не видно?
Возможно кто-то "сожрал" события. На тестовом примере убедитесь что hide/close приходят