使用QGraphicsWebView()在QGraphicsScene上设置拖动模式

时间:2012-11-05 15:35:02

标签: svg pyqt drag qgraphicsview qgraphicsscene

我有:

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

0 个答案:

没有答案