很抱歉,我多次询问有关pyqt的问题,但由于资源有限,我不得不这样做
我一直在尝试为我的圆形实现一个调整大小的功能,这是QGraphicsItem的一个扩展,它有一个椭圆和一个居中的文本。我可以根据需要调整形状的大小,但形状需要一段时间才能赶上鼠标,即在切换方向时,圆会继续增加,但切换方向需要一段时间,此外,圆会通过边界矩形左上角的锚点调整大小
请参阅this question了解一些代码背景
def updateHandlesPos(self):
s = self.handleSize
b = self.boundingRect()
self.handles[self.handleTopLeft] = QRectF(b.left(), b.top(), s, s)
self.handles[self.handleTopMiddle] = QRectF(b.center().x() - s / 2, b.top(), s, s)
self.handles[self.handleTopRight] = QRectF(b.right() - s, b.top(), s, s)
self.handles[self.handleMiddleLeft] = QRectF(b.left(), b.center().y() - s / 2, s, s)
self.handles[self.handleMiddleRight] = QRectF(b.right() - s, b.center().y() - s / 2, s, s)
self.handles[self.handleBottomLeft] = QRectF(b.left(), b.bottom() - s, s, s)
self.handles[self.handleBottomMiddle] = QRectF(b.center().x() - s / 2, b.bottom() - s, s, s)
self.handles[self.handleBottomRight] = QRectF(b.right() - s, b.bottom() - s, s, s)
def interactiveResize(self, mousePos):
self.prepareGeometryChange()
if self.handleSelected in [self.handleTopLeft,
self.handleTopRight,
self.handleBottomLeft,
self.handleBottomRight,
self.handleTopMiddle,
self.handleBottomMiddle,
self.handleMiddleLeft,
self.handleMiddleRight]:
self.radius += (mousePos.y() + mousePos.x() + self.mousePressPos.x() - self.mousePressPos.y())/64
self.setPos(self.x(),self.y())
self.update()
self.updateHandlesPos()
因为OP没有提供MRE,所以我从头开始创建了一个示例。逻辑是跟踪项目的变化,并据此计算新的几何图形,并确定其他项目的新位置
相关问题 更多 >
编程相关推荐