3

我有:

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。显然,我认为当我用鼠标滚动缩放时,s​​vg 会被缩放,但实际上self.webview是被缩放并出现滚动条的那个。所以,我真正需要知道的是如何self.webview在其滚动条边界内拖动整体(用鼠标左键单击)

4

0 回答 0