私は持っている:
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
、スクロールバーの境界内で全体をドラッグする方法です(マウスの左クリックで)