Zdarzenie mousePressEvent

0

Cześć,

Korzystam z QT w PyQT4.
Dodałem obsługę zdarzenia mousePressEvent, jednak nie działa ono na obiekcie QTableView,
tzn. jeśli kliknę w dowolnym miejscu w oknie na elemencie tytu QTableView, zdarzenie nie uruchamia się - jeśli kliknę w innym miejscu, zdarzenie działa.

Co więc powinienem zrobić w tym przypadku ?
Z góry dzięki za pomoc,

1

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1