in meinem Programm kann ich 2 Ellipsen erstellen durch drücken der linken Maustaste und will diese nun mit einer Linie verbinden wenn ich die rechte Taste drücke und die Maus drüberziehe.
Aber irgendwie reagieren die Ellipsen nicht auf die rechte Maustaste und ich verstehe nicht was ich vergessen oder falsch gemacht habe...
Kann mir jemand sagen wo der Fehler liegt?
graphicsscene.cpp
Code: Alles auswählen
pos=e->scenePos();
if(e->button() == Qt::LeftButton)
{
if(itemAt(pos))
{ QGraphicsScene::mousePressEvent(e); }
else
{
EllipseItem *item = new EllipseItem(pos.x()-5, pos.y()-5,10,10);
item->setFlags(QGraphicsItem::ItemIsMovable);
addItem(item);
}}}
Code: Alles auswählen
void EllipseItem::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
setRect((e->scenePos().x()-5),(e->scenePos().y()-5),10,10);
end = e->scenePos();
setFlag(QGraphicsItem::ItemIsSelectable, true);
if(isSelected() && e->button() == Qt::RightButton)
{
sc = new QGraphicsScene;
LineItem *linie = new LineItem((e->scenePos().x()), (e->scenePos().y()), end.x(),end.y());
sc->addItem(linie);
}
Code: Alles auswählen
LineItem::LineItem(qreal x1, qreal y1, qreal x2, qreal y2) : QGraphicsLineItem(x1,y1,x2,y2) {}
LineItem::~LineItem(){}
void LineItem::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
startpkt = e->scenePos();
endpkt = e->scenePos();
setLine(startpkt.x(),startpkt.y(),endpkt.x(),endpkt.y());
}