crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

maxvanceffer
  опции профиля:
сообщение 13.12.2009, 0:06
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вообщем есть менюшка с кнопками на все кнопки навешан eventFilter() который отлавливает момент входа мышки на кнопку и выхода с кнопки ...
Но странное дело что Qt::Leave ивент происходит вообще при любом движеними мышки над кнопкой .... Что за wtf....

Вот код которым ловлю в фильтре на вход и выход :
        bool MouseFilter::eventFilter(QObject *obj, QEvent *pe){
               if(pe->type() == QEvent::Enter){
                  emit enterMouseEventHappend(obj->objectName());
                  return true;
               }
               if(pe->type() == QEvent::FocusOut){
                  emit leaveMouseEventHappend();
                   return true;
               }
          return false;
        }


И уже в меню ловлю эти сигналы ... и делаю чёта с кнопкой ... Кто сталкивалься ? У меня qt 4.6

Или вообще как првильно отлавливать на крытие ... Искал по форуму нашёл только два топика и то не поделу .... Помогите плз
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 3)
JuryS1806
  опции профиля:
сообщение 13.12.2009, 0:26
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


я думаю что в заголовке нужно добавить несколько вариантов событий
enum CurrentAction { CurAction_Nothing, CurAction_DynamicSelect}
CurrentAction                 myCurrentMode;  // устанавливаемый текущий режим


а уже в теле программы методом switch переключать при активации меню в нужный режим и соответственно вешать событие на мышь.
int View::GetViewAction()
{
        switch ( myCurrentMode )
    {
      case CurAction_Nothing:
// Здесь думаю ничего не надо

           break;
      case CurAction_DynamicSelect:
// Здесь действия при активации меню
           break;
      default:
             Standard_Failure::Raise( "incompatible Current Mode" );
           break;
    }

т.е. в базовой инициализации класса нужно указать, что myCurrentMode = CurAction_Nothing
а при активации меню сделать myCurrentMode = CurAction_DynamicSelect

Сообщение отредактировал JuryS1806 - 13.12.2009, 0:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.12.2009, 4:47
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


maxvanceffer, а где у тебя событие Qt::Leave?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maxvanceffer
  опции профиля:
сообщение 13.12.2009, 23:28
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


maxvanceffer, а где у тебя событие Qt::Leave?

Да это я уже игрался с другими способами отловли данной ситуации.
Менял енами ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 17.7.2025, 19:05