我有:
self.setScene(QtGui.QGraphicsScene(self))
self.setTransformationAnchor(QtGui.QGraphicsView.AnchorUnderMouse)
self.setDragMode(QtGui.QGraphicsView.ScrollHandDrag)
自我在哪里QGraphicsView
。我在 QGraphicsWebView() 中打开我的 svg,因为它的交互性如下:
s = self.scene()
s.clear()
self.resetTransform()
self.webview = QGraphicsWebView()
self.webview.load(QtCore.QUrl(path_to_my_svg))
self.webview.setFlags(QtGui.QGraphicsItem.ItemClipsToShape)
self.webview.setCacheMode(QtGui.QGraphicsItem.NoCache)
self.webview.setZValue(0)
s.addItem(self.webview)
缩放工作正常,但是当我单击 webview 项目以拖动它时,除了光标更改为文本光标之外什么也没有发生。我只能在我打开它时拖动 svg,self.svgItem = QtSvg.QGraphicsSvgItem(path_to_my_svg)
但在这种情况下,它会呈现为静态图像,所以我在 svg 中失去了交互性(鼠标悬停,svg 元素中的鼠标悬停)......
根据 xndrme 的评论进行编辑:
正如他所建议的那样,SHIFT+鼠标左键单击效果很好,但它会拖动内部的整个 SVG self.webview
。显然,我认为当我用鼠标滚动缩放时,svg 会被缩放,但实际上self.webview
是被缩放并出现滚动条的那个。所以,我真正需要知道的是如何self.webview
在其滚动条边界内拖动整体(用鼠标左键单击)