图形项类

1. 图形项

创建具体的图形项需要具体对应的类,例如创建矩形使用QGraphicsRectItem,创建椭圆和圆使用QGraphicsEllipseItem,创建三角形和梯形使用QGraphicsPolygonItem,创建直线使用QGraphicsLineItem,创建文字使用QGraphicsTextItem。这些图形项都是QGraphicsItem类的直接或间接子类。QGraphicsItem类没有pen、brush、font属性,在具体的子类里才有这些属性,所以组件的属性设置有如下差异。

  QAbstractGraphicsShapeItem类有pen和brush属性,所以其子类可以通过设置brush属性设置填充颜色。在程序中,矩形、椭圆、三角形、梯形等都设置了填充颜色。

  QGraphicsLineItem只有pen属性,可以设置线条的颜色、线宽、线型等特性。

  QGraphicsTextItem有font属性,可以设置字体,还可以通过setDefaultTextColor()函数设置文字的颜色。

2. 图形项的属性设置

setFlag(flag, enabled=True)函数,设置图形项的一些特性,参数flag是枚举类型QGraphicsItem.GraphicsItemFlag,其具体取值和意义见Qt的帮助文档。程序中将图形项都设置为可以获得焦点、可移动、可选择的。

setZValue(Z)函数,设置图形项的Z值,参数Z是一个浮点数。这个参数控制叠放顺序,当有多个图形项叠加在一起时,Z值最大的显示在最前面。

setPos(x, y)函数,设置图形项的位置,如果图形项有父容器项,坐标(x, y)是父容器的坐标,否则就是图形场景的坐标。

setData(key, value)函数,用于设置图形项的自定义数据,整数型参数key是数据名称,value是具体的数据内容,可以是任意类型。key和value是一个键值对,使用setData()一次可以设置一个键值对,可以为一个图形项设置多个自定义键值对。程序里设置了两个自定义数据:

  item.setData(self.__ItemId, self._seqNum)  # 图形项的编号

  item.setData(self.__ItemDesc, desc)  # 图形项的描述

self.__ItemId是图形项的编号,其取值self._seqNum是一个递增变量,self.__ItemDesc是图形项的描述。这样,每个图形项有一个唯一的编号和文字描述。在窗口上单击某个图形项时,会提取这两个自定义数据显示在状态栏上。

3. 图形项操作

3.1 缩放

图形项的缩放使用QGraphicsItem.setScale(scale)参数,参数scale大于1是放大,小于1是缩小。

QGraphicsScene类的selectedItems()函数返回场景中选中的图形项的列表,如果只有一个图形项被选中,就用QGraphicsItem()中的setScale()函数对图形项进行缩放。如果选中的图形项个数大于1,或没有图形项被选中,就用QGraphicsView的scale()函数对视图进行缩放。

3.2 旋转

图形项的旋转使用QGraphicsItem.setRotation(angle)函数,参数angle为角度值,正值表示顺时针旋转,负值表示逆时针旋转。

 3.3 恢复坐标变换

缩放和旋转都是坐标变换,可以取消所有变换恢复初始状态。

3.4 叠放顺序

QGraphicsItem的zValue()函数值表示了图形项的叠放顺序,若有多个图形项叠加在一起,zValue()值最大的显示在最前面,zValue()值最小的显示在最后面。用setZValue()函数可以设置这个属性值。

3.5 图形项的组合

可以将多个图形项组合为一个图形项,并将其当作一个整体进行操作,如同PowerPoint软件里图形组合功能一样。使用QGraphicsItemGroup类实现多个图形项的组合,QGraphicsItemGroup是QGraphicsItem的资料,所以,实质上也是一个图形项。

3.6 图形项的删除

使用QGraphicsScene的removeItem()函数删除某个图形项。

原文地址:https://www.cnblogs.com/lynsha/p/13508376.html