我试图将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的绘画功能。
答案 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的父级,因此它将自动显示。