Linie zwischen Items

Alles rund um die Programmierung mit Qt
Antworten
konvex
Beiträge: 35
Registriert: 8. November 2008 17:58

Linie zwischen Items

Beitrag 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());
}
ganwell
Beiträge: 13
Registriert: 8. Januar 2009 18:50
Wohnort: Luzern, Schweiz
Kontaktdaten:

Beitrag 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
Antworten