qt提供的基本图元QGraphicsLineItem、QGraphicsTextItem、QGraphicsPixmapItem、QGraphicsPathItem等有时候并不能满足所有要求,因而在程序中通常继承QGraphicsItem或者其更具体的子类,自定义所需要的图元。继承QGraphcisItem,一般需要重写的成员函数有:
1)virtual QRectF boundingRect() const
此函数将一个图元的边界定义为了一个矩形区域,图元的绘制范围也局限在这个矩形区域之内,同时,QGraphicsView也利用这个区域范围来决定图元是否需要重绘。图元的形状可以是任意的(如矩形、圆形、多边形等),但是边界区域总是矩形,它不会随图元的各种转换而改变。需要注意的是,通常在画边界的区域的时候要包含进半个画笔的宽度进来。如下API例子:
QRectF CircleItem::boundingRect() const
{
qreal penWidth = 1;
return QRectF(-