void QtSegmentControl::mousePressEvent(QMouseEvent *event) { int index = segmentAt(event->pos()); if (segmentEnabled(index)) { d->wasPressed = d->focusIndex = d->pressedIndex = segmentAt(event->pos()); d->postUpdate(d->pressedIndex); Q_EMIT segmentClicked(index); } }
void GraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { switch(event->button()) { case Qt::LeftButton: switch(this->mode) { case POINT: //http://forum.qtfr.org/discussion/13407/selection-multiple-avancee-dans-une-qgraphicsscene emit pointClicked(event->scenePos()); break; case SEGMENT: { QGraphicsScene::mouseReleaseEvent(event); QList<QGraphicsItem*> l = selectedItems(); //if(itemAt(event->scenePos(), QTransform()) == NULL) break; //TODO if(l.size() >= 2) { emit segmentClicked(l); for(auto i : l) ((PointItem*)i)->select(false); ((PointItem*)itemAt(event->scenePos(), QTransform()))->select(true); } } break; case SUPPRESSION: break; } break; case Qt::RightButton: clickOnSelection(event->scenePos()); QGraphicsScene::mouseReleaseEvent(event); break; case Qt::MiddleButton: //translate break; default: break; } }