tablewidgetmouseaware.cpp
1 //------------------------------------------------------------------------------
2 // tablewidgetmouseaware.cpp
3 //
4 // Copyright (C) 2010 "Zalewa" <zalewapl@gmail.com>
5 //------------------------------------------------------------------------------
6 #include "tablewidgetmouseaware.h"
7 
8 #include <QMouseEvent>
9 #include <QModelIndex>
10 
11 TableWidgetMouseAware::TableWidgetMouseAware(QWidget* parent)
12 : QTableWidget(parent)
13 {
14  bEmitSignalsEvenIfIndexIsInvalid = false;
15 }
16 
17 void TableWidgetMouseAware::mouseReleaseEvent(QMouseEvent* event)
18 {
19  QModelIndex index = indexAt(event->pos());
20  switch (event->button())
21  {
22  case Qt::MidButton:
23  if (bEmitSignalsEvenIfIndexIsInvalid || index.isValid())
24  {
25  emit middleMouseClick(index, event->pos());
26  }
27  break;
28 
29  case Qt::RightButton:
30  if (bEmitSignalsEvenIfIndexIsInvalid || index.isValid())
31  {
32  emit rightMouseClick(index, event->pos());
33  }
34  break;
35 
36  default:
37  QTableView::mouseReleaseEvent(event);
38  break;
39  }
40 }
41 
42 void TableWidgetMouseAware::mouseDoubleClickEvent(QMouseEvent* event)
43 {
44  if (event->button() != Qt::LeftButton)
45  {
46  QTableView::mouseDoubleClickEvent(event);
47  }
48  else
49  {
50  QModelIndex index = indexAt(event->pos());
51  if (bEmitSignalsEvenIfIndexIsInvalid || index.isValid())
52  {
53  emit leftMouseDoubleClicked(index, event->pos());
54  }
55  }
56 }
57 
59 {
60  QItemSelectionModel* pSelectionModel = this->selectionModel();
61 
62  QList<int> rowIndices;
63  QModelIndexList rows = pSelectionModel->selectedRows();
64  foreach(const QModelIndex& index, rows)
65  {
66  rowIndices << index.row();
67  }
68 
69  return rowIndices;
70 }
QList< int > selectedRows() const
Returns indices of currently selected rows.