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())
39 case Qt::MiddleButton:
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();