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 :

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();
}
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
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();
}
Là, pas de problème, ça marche!

Maintenant, si je fais :

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));
}
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.

Savez-vous pourquoi ça ne fonctionne plus ?

Merci!