How to draw circle with line pattern using QGraphicsScene



  • Hi there,
    I'm using QGraphicsScene and don't know how to draw a colored circle with horizantal line, vertical line, or other patern in a given color inside. The background of GraphicsView should be in a different color from circle and lines. Something like the image below.

    0_1547252642743_cont.png

    I need to change the lines' thickness and color, and color of the circle.
    Thank you.


  • Moderators

    • Draw a circle using a QGraphicsEllipseItem
    • Draw a line using a QGraphicsRectItem
    • You can enter the dimensions of the circle/line into their constructors, or change the dimensions by calling setRect()
    • Set the circle/line colour using setBrush()

    Most importantly, set the circle as the parent of the line and set the QGraphicsItem::ItemClipsChildrenToShape flag. This puts the line inside the circle, and clips the line to the circle's perimeter.

    const int DIAMETER = 100;
    auto circle = new QGraphicsEllipseItem(0, 0, DIAMETER, DIAMETER);
    circle->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
    circle->setBrush(Qt::green);
    
    const int WIDTH = 10;
    const int LENGTH = DIAMETER;
    auto line = new QGraphicsRectItem(45, 0, WIDTH, LENGTH);
    line->setParentItem(circle);
    line->setBrush(Qt::black);
    
    auto scene = new QGraphicsScene;
    scene->addItem(circle);
    


  • It just works for me very well. I just used QGraphicsLineItem instead QGraphicsRectItem.
    Thank you in advance


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.