zoukankan      html  css  js  c++  java
  • 图形项类

    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()函数删除某个图形项。

  • 相关阅读:
    msf提权命令/meterpreter下的几个命令
    ms17010漏洞复现-2003
    复现IIS6.0远程命令执行漏洞
    代码审计之Finecms任意文件下载漏洞
    逻辑运算符
    RIP动态路由的配置
    跟着百度学习php之ThinkPHP的运行流程-2
    静态路由配置
    跟着百度学习php之ThinkPHP的运行流程-1
    外挂是怎么写的?
  • 原文地址:https://www.cnblogs.com/lynsha/p/13508376.html
Copyright © 2011-2022 走看看