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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Метод event() получает далеко не все события. Почему?  (Прочитано 2482 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Июнь 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, в общем, событие закрытия окна). Почему никаких других событий, кроме вышеперечисленных трех, не видно?
« Последнее редактирование: Июнь 20, 2016, 21:34 от xintrea » Записан

Собираю информацию по крупицам
http://webhamster.ru
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июнь 20, 2016, 22:19 »

обычно события перехватываются через eventFilter()
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Июнь 21, 2016, 05:57 »

Вопрос: должны ли в логе появляться и другие события, например, когда окно закрывается?
Да, должны

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


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