我有:
self.setScene(QtGui.QGraphicsScene(self))
self.setTransformationAnchor(QtGui.QGraphicsView.AnchorUnderMouse)
self.setDragMode(QtGui.QGraphicsView.ScrollHandDrag)
其中self是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元素中的mouseout)......
编辑基于xndrme的评论:
正如他所建议的那样,SHIFT +鼠标左键单击效果很好,但是它会拖动self.webview
内的整个SVG。显然我认为当我使用鼠标滚动缩放时,svg会变焦,但实际上self.webview
是缩放的并且会出现滚动条。所以,我真正需要知道的是如何在其滚动条边界内拖动整个self.webview
(用鼠标左键单击)