Получилось! Оказывается, чтобы отловить события от мыши фильтр надо инсталить не для самого виджета (QTreeView), а для его так называемой области просмотра (viewport) т.е. :
....
treeView->viewport()->installEventFilter(this);
....
bool CDialog::eventFilter(QObject * watched, QEvent * event)
{
if (event->type() == QEvent::MouseButtonRelease && watched == treeView->viewport())
{
return true;
}
return QObject::eventFilter(watched, event);
}
Для других вещей, я так понимаю, в т.ч. и для обработки нажатия клавиш, достаточно самого виджета:
....
treeView->installEventFilter(this);
....
bool CDialog::eventFilter(QObject * watched, QEvent * event)
{
if (event->type() == QEvent::KeyPress && watched == treeView)
{
return true;
}
return QObject::eventFilter(watched, event);
}
Думаю, теперь дело пойдет быстрее