Seite 1 von 1

Linie zwischen Items

Verfasst: 16. November 2008 14:16
von konvex
Hallo,
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);
}}}
ellipseitem.cpp

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

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

Verfasst: 9. Januar 2009 16:37
von ganwell
Ist Mousetracking eingeschaltet? Ich hatte das kürzlich mal vergessen, aber war nicht im Zusammenhang mit Graphics View. Man müsste vielleicht Mousetracking für das EllipseItem einschalten.

http://doc.trolltech.com/4.5/qwidget.ht ... cking-prop

Gruss
Ganwell