Bonjour,
J'essaie à l'aide d'un petit projet test de récupérer les événements dans un item de ma QGraphicsView.
J'ai donc :
Et un item Ellipse qui hérite de QGraphicsEllipseItem :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Widget::Widget(QWidget *parent) : QWidget(parent) { QGraphicsView *vue = new QGraphicsView(this); vue->setMouseTracking(true); vue->setFixedSize(800, 400); QGraphicsScene *scene = new QGraphicsScene(); Ellipse *ellipse = new Ellipse(0, 0, 50, 50, 0, scene); scene->addItem(ellipse); vue->setScene(scene); vue->show(); }
Là, pas de problème, ça marche!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Ellipse::Ellipse(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent, QGraphicsScene *scene) : QGraphicsEllipseItem(x, y, w, h, parent, scene) { this->setFlag(QGraphicsItem::ItemIsSelectable); } void Ellipse::mousePressEvent(QGraphicsSceneMouseEvent *event) { this->setScale(5); this->prepareGeometryChange(); }
Maintenant, si je fais :
l'événement mousePressEvent n'est plus appelé. Ce qui pose un problème si je veux avoir mon item personnalisé tout en pouvant le sélectionner sans problème dans ma vue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Ellipse::Ellipse(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent, QGraphicsScene *scene) : QGraphicsEllipseItem(parent, scene) { this->setFlag(QGraphicsItem::ItemIsSelectable); } void Ellipse::mousePressEvent(QGraphicsSceneMouseEvent *event) { this->setScale(5); this->prepareGeometryChange(); } void Ellipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->drawEllipse(QPoint(10,10), 50, 50); } QRectF Ellipse::boundingRect() const { return QRectF(QPointF(-40,-40), QPointF(60,60)); }
Savez-vous pourquoi ça ne fonctionne plus ?
Merci!
Partager