crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Фильтр событий не перехватывает кнопки мыши (installEventFilter/eventFilter)
Litkevich Yuriy
  опции профиля:
сообщение 17.2.2010, 21:30
Сообщение #1


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

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

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




Репутация:   94  


Понадобилось перехватывать событие нажатия левой кнопки мыши на графическом представлении с помощью родительского виджета-окна.
Делаю так:
MainWindow::MainWindow(QWidget* parent):QWidget(parent)
{
...
    view = new MyView(scene);
    view->installEventFilter(this);
...
}

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    
    bool isView = (obj == view);
    bool isMousePress = (event->type() == QEvent::MouseButtonPress);
    qDebug() << "eventFilter. isView -" << isView << "\t" << "isMousePress -" << isMousePress;
    if (!isMousePress)
        qDebug() << "Event Type =" << event->type();
...
    // pass the event on to the parent class
    return QWidget::eventFilter(obj, event);
}
MainWindow - наследник QWidget
Ловлю самые разные события отправляемые в представление. Но по нажатию Левой и Средней кнопки мыши ни каких событий нет.
По Правой кнопке мыши ловлю только QEvent::ContextMenu
MouseTraking вроде не причём.
И ещё, я могу выделять прямоугольную область на представлении (QRubberBand), т.е. само представление получает это событие.

Не пойму в чём дело.

Qt 4.6.0/виндовоз/MinGW (из комплекта Qt)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 17.2.2010, 22:12
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


А MyView это не наследник ли QGraphicsView?
view->viewport()->installEventFilter(this); ???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.2.2010, 22:15
Сообщение #3


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

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

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




Репутация:   94  


Цитата(BRE @ 18.2.2010, 1:12) *
А MyView это не наследник ли QGraphicsView?
он самый

Цитата(BRE @ 18.2.2010, 1:12) *
view->viewport()->installEventFilter(this); ???

фик бы сам додумался. Теперь работает, спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 25.4.2024, 7:57