crossplatform.ru

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

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)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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


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