Для начала небольшой код:
class CMainWindow : public QMainWindow
{
private:
QTableView* tbl;
public:
CMainWindow();
private:
bool eventFilter(QObject* watched, QEvent* event);
};
CMainWindow::CMainWindow()
{
tbl = new QTableView;
tbl->installEventFilter(this);
setCentralWidget(tbl);
}
bool CMainWindow::eventFilter(QObject* watched, QEvent* event)
{
if(watched == tbl)
{
if(event->type() == QEvent::MouseButtonPress)
{
qDebug("MouseButtonPress");
}
if(event->type() == QEvent::MouseButtonRelease)
{
qDebug("MouseButtonRelease");
}
if(event->type() == QEvent::MouseButtonDblClick)
{
qDebug("MouseButtonDblClick");
}
}
return QMainWindow::eventFilter(watched, event);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
СMainWindow main;
main.show();
return app.exec();
}
Так вот, можно сколь угодно долго давить на мышь и щелкать по QTableView, но ни одного из вышеперечисленных событий описанных в eventFilter не поступит! В чем дело?