0

我正在尝试将 QGraphicsPolygonItem 放在由 QPainter 在自定义 QGraphicsItem 中绘制的椭圆上。我的问题如下。我用灰色渐变填充了椭圆,并用红色填充了我的矩形。现在问题出在整体显示上。QGraphicsPolygonItem 显示边界矩形的白色背景。我的问题是如何删除它?!

我想删除白色背景

编辑:我的绘画功能

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 的绘图功能。

4

1 回答 1

0

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

当您为该项目设置父项时,您会立即将其添加到场景中,因此您不应该调用 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 的父项,它将自动显示。

于 2013-11-07T10:00:14.913 回答