Russian Qt Forum

Qt => Общие вопросы => Тема начата: admin_007 от Ноябрь 13, 2007, 10:59



Название: Qt и события (QEvent)
Отправлено: admin_007 от Ноябрь 13, 2007, 10:59
Помогите плиз.
Мне надо перехватить нажатие кнопки мышки на tableView.
сообщение "ev" работает во все случаях (когда нажимаю на клавиатуру и когда нажимаю на мышку)
Но при нажатии на мышку не выводиться сообщение: "m_ev".
Т.е. условие не выполняется. Что то в строке: QEvent::MouseButtonPress.
Если я ее заменю на QEvent::KeyPress то все работает. Почему же с мышкой не работает?

Вот следующий код:

bool MyClass::eventFilter(QObject* target, QEvent* event)
{
if(target == tableView1)
{
cout << "ev\n";
if(event->type() == QEvent::MouseButtonPress)
{
cout << "m_ev\n";
return QWidget::eventFilter(target, event)
}
}
return QWidget::eventFilter(target, event)
}

Спасибо.


Название: Re: Qt и события (QEvent)
Отправлено: pastor от Ноябрь 13, 2007, 11:05
Попробуйте повесить фильтр на viewport()



Название: Re: Qt и события (QEvent)
Отправлено: admin_007 от Ноябрь 13, 2007, 11:23
Что это такое?


Название: Re: Qt и события (QEvent)
Отправлено: pastor от Ноябрь 13, 2007, 14:14
Очевидно, сейчас вы установили фильтр таким образом:

tableView1->installEventFilter(this);

попробуйте сделать вот так:

tableView1->viewport()->installEventFilter(this);

ЗЫ: Что такое viewport читаем в ассистанте


Название: Re: Qt и события (QEvent)
Отправлено: Dodge от Ноябрь 13, 2007, 14:31
А не проще mousePressEvent переопределить?
или необходимо ловить именно чужой евент?