I am creating an embedded application, and the versions I have to use
presently for Qt and PyQt do not support QGraphicsScene.addWidget(). I
want various scene/view items to be able to interact with others
scene/view items. I have tried emitting signals from one item to
another, but have not had any success. After having searched the
literature, posts, and google, I appreciate that this MIGHT not be
practicabl, so I would like to confirm this! Can you advise me if there
is anyway to get the " intention" of the following code to work? I
would like, for example, to effect an instance of a QGraphicstextItem
with its setPlainText() method from another GraphicsItem event such as
from a reimplementation of its .mouseReleaseEvent method:
from PyQt4 import *
from PyQt4.QtGui import*
from PyQt4.QtCore import *
import sys
class text(QGraphicsTextItem):
def __init__(self):
QGraphicsTextItem.__init__(self)
self.setFlag(QGraphicsItem.ItemIsFocusable)
self.setFlag(QGraphicsItem.ItemIsSelectable)
self.setTextInteractionFlags(Qt.TextEditable)
self.setPlainText("0000")
self.setZValue(3.0)
class marker(QGraphicsItem):
def __init__(self):
QGraphicsItem.__init__(self)
self.setFlag(QGraphicsItem.ItemIsFocusable)
self.setFlag(QGraphicsItem.ItemIsMovable)
def boundingRect(self):
return QRectF(25.0,0.0,25.0,270.0)
def paint(self, painter, option, widget):
ss = painter.drawRect(25.0,230.0,25.0,25.0)
tt = painter.drawLine(37.5,0.0,37.5,270.0)
def mouseMoveEvent(self, mouseEvent):
pt = self.mapToScene(mouseEvent.pos()).x()
self.setPos(pt-37.5,0)
self.update()
def mouseReleaseEvent(self,mouseEvent1):
dbl = text()
dbl.setVisible(True)
dbl.setPlainText("3.333")
dbl.setFlag(QGraphicsItem.ItemIsFocusable)
dbl.moveBy(50.0,50.0)
dbl.update()
class MainScene(QGraphicsScene):
def __init__(self):
QGraphicsScene.__init__(self)
self.setSceneRect(0.0,0.0,480,270)
item,item1 = text(),marker()
self.addItem(item), self.addItem(item1)
class AllItemsView(QGraphicsView):
def __init__(self):
QGraphicsView.__init__(self)
self.setWindowTitle("Text")
self.setInteractive(True)
self.setEnabled(True)
self.scene = MainScene()
self.mainScene = MainScene()
self.setScene(self.mainScene)
if __name__=="__main__":
app = QApplication(sys.argv)
view = AllItemsView()
view.show()
sys.exit(app.exec_())
The two items appear and work fine, but it is impossible to change the
contents of the text instance from the marker item. Thanks for any
comments on this problem!
_______________________________________________
PyQt mailing list [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt