23 #include "tablewidgetmouseaware.h" 
   25 #include <QModelIndex> 
   26 #include <QMouseEvent> 
   28 TableWidgetMouseAware::TableWidgetMouseAware(QWidget *parent)
 
   29         : QTableWidget(parent)
 
   31         bEmitSignalsEvenIfIndexIsInvalid = 
false;
 
   34 void TableWidgetMouseAware::mouseReleaseEvent(QMouseEvent *event)
 
   36         QModelIndex index = indexAt(event->pos());
 
   37         switch (event->button())
 
   40                 if (bEmitSignalsEvenIfIndexIsInvalid || index.isValid())
 
   41                         emit middleMouseClick(index, event->pos());
 
   45                 if (bEmitSignalsEvenIfIndexIsInvalid || index.isValid())
 
   46                         emit rightMouseClick(index, event->pos());
 
   50                 QTableView::mouseReleaseEvent(event);
 
   55 void TableWidgetMouseAware::mouseDoubleClickEvent(QMouseEvent *event)
 
   57         if (event->button() != Qt::LeftButton)
 
   58                 QTableView::mouseDoubleClickEvent(event);
 
   61                 QModelIndex index = indexAt(event->pos());
 
   62                 if (bEmitSignalsEvenIfIndexIsInvalid || index.isValid())
 
   63                         emit leftMouseDoubleClicked(index, event->pos());
 
   69         QItemSelectionModel *pSelectionModel = this->selectionModel();
 
   71         QList<int> rowIndices;
 
   72         QModelIndexList rows = pSelectionModel->selectedRows();
 
   73         for (
const QModelIndex &index : rows)
 
   75                 rowIndices << index.row();