2012-02-24 1 views
1

QGraphicsView에 그림 QPixmap이있는 QGraphicsscene이 있습니다. QPixmap QGraphicsItem.ItemIsMovable로 해결했습니다. 그리고 나는 그것이 움직일 때 그림의 위치를 ​​얻고 싶다. 어떻게해야합니까?pyqt 이미지 위치 얻기

답변

1

현재 이미지 위치를 알고 싶다면 pixmapItem.pos() 또는 pixmapItem.x()pixmapItem.y()에서받을 수 있습니다.

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import sys 
from PyQt4 import QtCore, QtGui 


class MovablePixmapItem(QtGui.QGraphicsPixmapItem): 
    def __init__(self, pixmap, *args, **kwargs): 
     QtGui.QGraphicsPixmapItem.__init__(self, pixmap, *args, **kwargs) 
     self.setFlags(QtGui.QGraphicsItem.ItemIsMovable | 
         QtGui.QGraphicsItem.ItemSendsGeometryChanges) 

    def itemChange(self, change, value): 
     if change == QtGui.QGraphicsItem.ItemPositionHasChanged: 
      print value.toPointF() 
      # do other work, or emit signal 
     return QtGui.QGraphicsPixmapItem.itemChange(self, change, value) 


class MainWidget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.pixmapItem = MovablePixmapItem(QtGui.QPixmap('image.png')) 
     self.scene = QtGui.QGraphicsScene() 
     self.scene.addItem(self.pixmapItem) 
     self.view = QtGui.QGraphicsView(self.scene) 
     layout = QtGui.QVBoxLayout() 
     layout.addWidget(self.view) 
     self.setLayout(layout) 

    def do_test(self): 
     pass 


if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    widget = MainWidget() 
    widget.resize(640, 480) 
    widget.show() 
    sys.exit(app.exec_()) 
:

그러나 당신이 알 필요가 있다면이 이동 될 때, 당신은 QGraphicsPixmapItem을 하위 클래스는, 오버라이드 itemChange 기능에 QGraphicsItem.ItemSendsGeometryChanges 플래그와를 받게되며 통지를 설정