Eigenes QGraphicsItem will sich nich markieren lassen....
-
class EdgeView : public QGraphicsItem { public: EdgeView(); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void setPoint1(int x, int y); void setPoint2(int x, int y); void mark(); void unmark(); protected: void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event ); private: int x1,y1,x2,y2; int thickness; bool marked; static EdgeView* markedItem; }; EdgeView* EdgeView::markedItem=0; void EdgeView::mark() { if(markedItem && markedItem != this) markedItem->unmark(); marked=true; markedItem=this; update(); } void EdgeView::mouseReleaseEvent( QGraphicsSceneMouseEvent* event ) { mark(); } void EdgeView::unmark() { marked=false; } void EdgeView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QPolygon polygon; painter->setPen(Qt::NoPen); painter->setBrush(Qt::SolidPattern); if(marked) painter->setBrush(Qt::red); polygon << QPoint(x1,y1) << QPoint(x1,y1+thickness) << QPoint(x2,y2+thickness) << QPoint(x2,y2); painter->drawPolygon(polygon); } Der Code der die Objekte generiert: QGraphicsView* graphicsView = new QGraphicsView(this); QGraphicsScene* graphicsScene = new QGraphicsScene(graphicsView); EdgeView* nv = new EdgeView; EdgeView* nv2 = new EdgeView; nv->setPoint1(0,0); nv->setPoint2(50,25); nv2->setPoint1(50,25); nv2->setPoint2(100,1); graphicsScene->addItem(nv); graphicsScene->addItem(nv2); graphicsView->setScene(graphicsScene); setCentralWidget(graphicsView);
Sooooo hoffe das ist nich zu viel Code, hab unnötiges rausgehauen.
Wenn ich auf das linke Item klicke wird es wie es sollte rot, wenn ich auf das rechte danach klicke, passiert jedoch gar nichts! Auch alleine lässt sich "nv2" nicht markieren.
-
Problem näher, erkannt: Beim 2ten BoundingRect stimmen die Koordinaten anscheinend nicht, jedoch benutze ich dieselbe wie beim Polygon, und er zeichnet es ja korrekt. Ideen?