[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyQt] Problem with QGraphicsView and Scale
From:       Cyril Giraudon <cyril.giraudon () free ! fr>
Date:       2012-07-09 15:11:31
Message-ID: 4FFAF4A3.9000807 () free ! fr
[Download RAW message or body]

Hello,

My system is win7 and I use PyQt version 4.8.5 on Qt 4.7.3.
Seems there is a bug with QGraphicsView and scaling capability.

Consider the script below. It is a simple circle in a view.
The program can take a parameter : 1 <= the scale <= 1000 (for instance).

When scale = 1 (python script.py 1),  the circle is selected only when 
the circle is clicked.
When scale = 1000 (python script.py 1000),  the circle is selected when 
the mouse is in the top left quart plane relative to the circle
x < 0
y < 0

Is this a known issue ?

Best regards,

Cyril.






# script.py [scale]
# -*- coding: utf-8 -*-

import sys

from PyQt4.QtCore import Qt
from PyQt4.QtGui import (QApplication, QGraphicsScene,
                          QGraphicsView, QGraphicsEllipseItem,
                          QPainter, QBrush)

class Circle(QGraphicsEllipseItem):
     def __init__(self, parent=None):
         super(Circle, self).__init__(-50., -50., 100., 100., parent=parent)
     self.setFlag(self.ItemIsSelectable , True)
     self.setFlag(self.ItemIsMovable, True)
     self.setBrush(QBrush(Qt.red))

if __name__ == "__main__":
     from PyQt4.QtCore import QT_VERSION_STR, PYQT_VERSION_STR
     print "PyQt version : ", PYQT_VERSION_STR
     print "Qt version : ", QT_VERSION_STR
     app = QApplication(sys.argv)

     scale = float(sys.argv[1]) if len(sys.argv)>1 else 1.

     scene = QGraphicsScene()
     fc = Circle(parent=None)
     fc.setScale(1/scale)
     scene.addItem(fc)

     view = QGraphicsView(scene)
     view.scale(scale, scale)
     view.setRenderHints(QPainter.Antialiasing)
     view.show()

     app.exec_()
     sys.exit()

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic