I have a problem , that update() function in QGraphicsItem
doesn't work. What I want to do is , when I move circle , other QGraphicsItem
( in the mean time roundrect ) changes color. This is a example, what I want to do:
circle.cpp:
void CircleItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { // RoundRect Object RectItem->SetBackGround(); QGraphicsItem::mouseMoveEvent( event ); }
RoundRect.cpp:
void RoundRectItem::SetBackGround() { ChangeBackground = true; update(); } void RoundRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QRectF rec = QRectF( QPoint( 0,0 ), boundingRect().size() / 2 ); roundRect = QRectF(rec.adjusted(-rec.height() / 2, 0, rec.height()/2, 0)); roundRect.moveTo( boundingRect().center().x() - roundRect.width() / 2, boundingRect().center().y() - roundRect.height() / 2 ); if( !ChangeBackground ) painter->setBrush( backBrush ); else painter->setBrush( QBrush( Qt::blue ) ); painter->setPen( QColor( 255,255,255 ) ); painter->drawRoundedRect(roundRect, roundRect.height() / 2, roundRect.height() / 2 ); }
So the question is, how can I make this update()
work right.