Python 如何在QGraphics站点上使用QGraphicsRotation

Python 如何在QGraphics站点上使用QGraphicsRotation,python,qt,pyqt,qgis,Python,Qt,Pyqt,Qgis,我有一个(self.rb)。我想使用旋转工具围绕一个点(self.originPoint)旋转此项。但是当我尝试执行下面的代码时,它给出了如下所示的错误。有人能帮忙吗 拉票活动 self.rb.setTransform(rotationItem)类型错误:QGraphicsItem.setTransform(QTransform,bool combine=False):参数1 具有意外类型“QGraphicsRotation” Python版本: 2.7.2(默认值,2011年6月12日,15:

我有一个(self.rb)。我想使用旋转工具围绕一个点(self.originPoint)旋转此项。但是当我尝试执行下面的代码时,它给出了如下所示的错误。有人能帮忙吗

拉票活动 self.rb.setTransform(rotationItem)类型错误:QGraphicsItem.setTransform(QTransform,bool combine=False):参数1 具有意外类型“QGraphicsRotation”

Python版本: 2.7.2(默认值,2011年6月12日,15:08:59)[MSC v.1500 32位(英特尔)]

代码:

def canvasPressEvent(self, event):
        self.rb = QgsRubberBand(self.canvas, True)
        self.originPoint = self.rb.boundingRect().center()
        if self.rb:return                    

def canvasMoveEvent(self,event):
        if not self.rb:return
        currpoint = self.toLayerCoordinates(self.layer,event.pos())
        angle = center.azimuth( currpoint )

        rotationItem = QGraphicsRotation()
        rotationItem.setAngle = angle
        rotationItem.setOrigin = QVector3D(self.originPoint)
        self.rb.setTransform(rotationItem)
函数将a作为其第一个参数。让你措手不及的是a不是QT转换!它处于不同的层次结构中;它继承自,它继承自

所以你不能通过一个QGraphicsRotation来旋转你的QGraphicsSitem,这是违反直觉的。你必须做一个QTransform,做你想要的,并使用它

或者——这可能要容易得多——使用和函数应用所需的转换,而不用担心自己创建任何转换对象


希望有帮助

您可以通过将
qgraphicsform
应用于
QGraphicsItem
。然而,它需要一个转换列表,因为它是用例。对于简单的转换,最好使用专用的方法(即本例中的
setRotation
),您是对的!我传递了错误的对象类型..我尝试了QGraphicsItem.setRotation()+setTransformOriginPoit()…setTransformOriginPoint()没有任何效果,如我所见。。