37 bool doubleClickHappened =
false;
38 bool clickSelected =
false;
44 virtual void mousePressEvent(QMouseEvent *event) {
45 clickSelected = selectionModel()->isSelected(indexAt(event->pos()));
46 QTreeView::mousePressEvent(event);
53 void mouseReleaseEvent(QMouseEvent *event) {
54 doubleClickHappened =
false;
56 QTime dieTime = QTime::currentTime().addMSecs(200);
57 while (QTime::currentTime() < dieTime)
58 QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
60 if (!doubleClickHappened && clickSelected) {
61 QModelIndex item = indexAt(event->pos());
62 bool selected = selectionModel()->isSelected(indexAt(event->pos()));
63 if ((item.row() == -1 && item.column() == -1) || selected) {
65 const QModelIndex index;
66 selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select);
69 QTreeView::mouseReleaseEvent(event);
72 QTreeView::mouseReleaseEvent(event);
74 clickSelected =
false;
81 void mouseDoubleClickEvent(QMouseEvent *event) {
82 doubleClickHappened =
true;
83 QTreeView::mouseDoubleClickEvent(event);