如何从QGraphicPolygonItem中显示删除BoundingRect

时间:2013-11-07 09:21:07

标签: qt user-interface graphics qgraphicsitem

我试图将QGraphicsPolygonItem放在QPainter在自定义QGraphicsItem中绘制的椭圆上。我的问题如下。我用椭圆形的颜色填充椭圆,我用红色填充了我的矩形。现在问题在于整体显示。 QGraphicsPolygonItem显示绑定的白色背景。我的问题是如何删除它?!

I would like to remove the white background

编辑:我的绘画功能

QPoint p1(0,0);
QPoint p2(10, 8);

painter->setPen(Qt::NoPen);
painter->setBrush(Qt::lightGray);
painter->drawEllipse(p2, 100, 100);

painter->setBrush(Qt::gray);
painter->setPen(Qt::black);
painter->drawEllipse(p1, 100, 100);

myPolygon = new QGraphicsPolygonItem(myPolygonPoints, this);
myPolygon->setBrush(Qt::red);
myPolygon->setPen(Qt::NoPen);
myPolygon->show();

这是我的客户QGraphicsItem的绘画功能。

1 个答案:

答案 0 :(得分:0)

首先,在paint函数中创建QGraphicsPolygonItem非常糟糕;每次调用绘制函数时,都会创建一个新项目并将其添加到图形场景中,并且最终会耗尽内存!

当您为该项目提供教育时,您会立即将其添加到场景中,因此您不应该调用myPolygon-> show();

在派生的MyGraphicsItem类中实例化QGraphicsPolygonItem ......

class MyGraphicsItem : public QGraphicsItem
{
    public:
        MyGraphicsItem(QGraphicsItem* parent);

    private:
        QGraphicsPolygonItem* m_pMyPolygon;
}


MyGraphicsItem::MyGraphicsItem(QGraphicsItem* parent)
    : QGraphicsItem(parent)
{

    // assume you've created the points...

    m_pMyPolygon = new MyPolygonItem(myPolygonPoints, this);

    // set the brush and pen for the polygon item
    m_pMyPolygon->setBrush(Qt::transparent);
    m_pMyPolygon->setPen(Qt::red);
}

由于多边形项目是graphicsItem的父级,因此它将自动显示。