<HTML>
<HEAD>
<TITLE>Re: [PyQt] GraphicsItem, QObject Inheritance problem</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>All you need to connect signals and slots is a qobject. &nbsp;You can create <B>any</B> qobject for this task.<BR>
<BR>
Here is a concrete example, actually using a QGraphicsItem. &nbsp;This makes an Image button that emits a signal &#8220;clicked()&#8221; and move the graphics to mimic a button press:<BR>
<BR>
class ImageButton(QtGui.QGraphicsPixmapItem):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, pixmap, parent=None, oneshot=True):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QtGui.QGraphicsPixmapItem.__init__( self, pixmap, parent )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.emitter = QtCore.QObject()<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.emitter.setObjectName(&quot;ImageButtonEmitter&quot;)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.oneshot = oneshot<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.callback = None<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;def mousePressEvent(self, event):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.moveBy(1,1)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.emitter.emit( QtCore.SIGNAL(&quot;clicked()&quot;) )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if self.callback:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.callback()<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;def mouseReleaseEvent(self, event):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not self.oneshot:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.moveBy(-1,-1) <BR>
<BR>
To connect to this signal as follows:<BR>
<BR>
foo = ImageButton(...)<BR>
foo.emitter.connect( foo.emitter, QtCore.SIGNAL(&#8220;clicked()&#8221;), pythonfunc )<BR>
<BR>
I find this to be cleaner than wrapping a QObject around the graphics item, but in internet speak YMMV.<BR>
<BR>
Brian<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'> <BR>
</SPAN></FONT></BLOCKQUOTE>
</BODY>
</HTML>