항목 크기가 변경되지 않지만 항목 간의 거리가 확대되는 장면을 구현하는 동안 직사각형과 텍스트 "A"를 그리는 다음 코드로이 문제가 발생했습니다. 이제 직사각형 항목에 ItemIgnoresTransformations 플래그를 설정하면 확대를 통해 사각형이 사라집니다 (마우스 버튼을 클릭하고 사각형 주위로 드래그). 그러나 그것은 텍스트의 경우에는 발생하지 않습니다. 또한 fitInView가 설정 한 새로운 뷰포트 영역은 내가 요청한 것과 매우 다릅니다.ItemIgnoresTransformations가 켜져있을 때 QGraphicsView의 fitIn 문제 문제
import sys
from PyQt4 import QtCore, QtGui
class GV(QtGui.QGraphicsView):
def __init__(self, *args, **kwargs):
QtGui.QGraphicsView.__init__(self, *args, **kwargs)
def mousePressEvent(self, event):
pos = QtCore.QPoint(event.pos())
self.startPos = pos
def mouseReleaseEvent(self, event):
pos = QtCore.QPoint(event.pos())
self.endPos = pos
rect = QtCore.QRect(self.startPos, self.endPos)
sceneRect = self.mapToScene(rect).boundingRect()
print 'Selected area: viewport coordinate:', rect, \
', scene coordinate:', sceneRect
self.fitInView(sceneRect)
print 'new viewport in scene coordinates:', \
self.mapToScene(self.viewport().geometry()).boundingRect()
class Scene(QtGui.QGraphicsScene):
def __init__(self, *args, **kwargs):
QtGui.QGraphicsScene.__init__(self, *args, **kwargs)
self.itemA = QtGui.QGraphicsSimpleTextItem('A')
self.itemA.setPos(20, 20)
self.itemA.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations, True)
self.addItem(self.itemA)
self.itemB = QtGui.QGraphicsRectItem(30, 50, 20, 20)
self.addItem(self.itemB)
self.itemB.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations, True)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
widget = QtGui.QMainWindow()
scene = Scene()
view = GV(scene, widget)
widget.setCentralWidget(view)
widget.show()
app.exec_()
설명을 이해할 수 있습니다!
고마워, 그 "사라지는"문제에 대한 작동합니다. 하지만이 경우 로컬 좌표가 장면 좌표라고 생각했습니다. 눈에 띄지는 않습니다. – subhacom