QGraphicsItem : pas d'appel à mousePressEvent()
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:
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:
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:
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!