Je comprends pas comment faire, et plus je lis la doc, enfin si on peut considérer ça comme de la doc..
Plus je suis paumé.
Même les exemples forunis dans le package de la bibliothèque ne sont pas commentés :-/
Je n'arrive vraiment pas à relier la figure tracée dans la scène à l'event.
Il doit manquer quelque chose, mais je patauge.
Exemple d'un code simpliste :
class Fenetre(QtGui.QMainWindow) :
def __init__(self) :
QtGui.QMainWindow.__init__(self)
self.sg = SceneGraphique(0, 0, 400, 400, self)
self.vue = QtGui.QGraphicsView()
self.setCentralWidget(self.vue)
self.vue.setScene(self.sg)
class SceneGraphique(QtGui.QGraphicsScene) :
def __init__(self, *params) :
QtGui.QGraphicsScene.__init__(self, *params)
pinceau = QtGui.QPen(QtCore.Qt.blue, 50, QtCore.Qt.SolidLine, QtCore.Qt.FlatCap, QtCore.Qt.MiterJoin)
brosse = QtGui.QBrush()
brosse.setStyle(QtCore.Qt.SolidPattern)
mrect = RectangleBleu(150, 150, 50, 50)
self.addRect(mrect.rect(), pen=pinceau, brush=brosse)
def mousePressEvent(self, evt):
print('Clic scene')
def mouseReleaseEvent(self, evt):
print('Clic relâché scene')
class RectangleBleu(QtGui.QGraphicsRectItem):
def __init__(self, *args) :
QtGui.QGraphicsRectItem.__init__(self)
# Ok, si j'ai bien compris la doc, setPen et setBrush
# ne fonctionnent pas avec GraphicsItem...
#self.setPen(QtGui.QPen(QtCore.Qt.blue, 50, QtCore.Qt.SolidLine, QtCore.Qt.FlatCap, QtCore.Qt.MiterJoin))
#brosse = QtGui.QBrush()
#brosse.setStyle(QtCore.Qt.SolidPattern)
#self.setBrush(brosse)
self.setRect(*args)
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True)
self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True)
def mousePressEvent(self, evt):
print('Clic Rectangle')
#QtGui.QGraphicsScene.mousePressEvent(self, evt)
def mouseReleaseEvent(self, evt):
print('Clic relâché Rectangle')
#QtGui.QGraphicsScene.mouseReleaseEvent(self, evt)
app = QtGui.QApplication(sys.argv)
f = Fenetre()
f.show()
sys.exit(app.exec_())
En passant par addItem, là j'ai une réaction, mais ça merdouille pas mal, en plus faut que je lui pass l'objet, et vu que les setX ne fonctionnent pas, je peux pas configurer le rectangle, couleur et brosse.