Linie zwischen Items
Verfasst: 16. November 2008 14:16
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
ellipseitem.cpp
lineitem.cpp
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());
}