ich mache gerade meine ersten Schritte mit Qt.
Problem: ich habe mir ein graphicsItem erstellt. Es besteht aus ein paar Linien und Text (1-3 Zeichen).
Das funktioniert soweit auch, aber das boundingRect stimmt leider nur so ungefähr, weil die Textlänge erst zur Laufzeit fest steht.
Wenn das Item in eine scene() eingefügt wird, wird auch zuerst das boundingRect aufgerufen, erst danach der painter.
Wie und wo ermittelt man unter diesen Umständen ein boundingRect für painter.drawText() ? Geht das nur lowlevel über die fontmetric?
Code: Alles auswählen
class SummeAsphaltItem(QtGui.QGraphicsItem):
def __init__(self, top, summe):
QtGui.QGraphicsItem.__init__(self)
self.summe=summe #string
self.top=top
def boundingRect(self):
return QtCore.QRectF(30,self.top-15,50,15) #fix me
def paint(self, painter, option, widget=None):
font = QtGui.QFont('Helvetica', 10, QtGui.QFont.Normal)
painter.drawLine(30,self.top,55,self.top)
painter.setFont(font)
summe=u'Σ %s'%self.summe
painter.drawText(56,self.top, summe)