Najprościej instalując filtr zdarzeń na tableView w konstruktorze klasy która go zawiera czyli przypuszczalnie w MainWindow
tableView->installEventFilter( this );
w klasie dodajesz metodę
bool eventFilter(QObject * object, QEvent * event );
i przykładowa implementacja
bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if( object == tableView && event->type() == QEvent::MouseButtonPress ) {
QMouseEvent * mouseEvent = static_cast< QMouseEvent * >( event );
if( mouseEvent->button() == Qt::LeftButton ) {
qDebug()<< "mouse press event :: left";
return true;
}
else
return false;
}
return false;
}
teraz wszystkie zdarzenia z tableView są najpierw wysyłane do okna nadrzędnego gdzie możesz je obsłużyć
Druga opcja to stworzenie własnej klasy TableView która dziedziczy QTableView i obsłużenie tego bezpośrednio w metodzie klasy TableView - opcja lepsza ale i trochę więcej kodu trzeba napisać, polecam poczytać http://qt-project.org/doc/qt-5.0/qtcore/eventsandfilters.html