テキストを表示する必要があるキャンバスにいくつかの小さなグラフィックアイテムがあります。改行があると、縦の行間隔が不必要に大きくなり、テキストがグラフィック アイテムの外側に描画されます。QGraphicsTextItem で行間隔 (または高さ) を設定する方法を探していましたが、うまくいきませんでした。
私が試してみました;
setHtml("<div line-height=100%>some text</div>")
等
行間スペースを設定する必要があるコードは次のとおりです。
class GraphicText(QtGui.QGraphicsTextItem):
def __init__(self, text='', font=None, editable=False, text_width = None, **kw):
super(GraphicText, self).__init__(**kw)
if editable:
self.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction)
else:
self.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
if font:
self.setFont(font)
self.setText(text, text_width)
def setText(self, text = '', text_width = None):
cw = self.textWidth()
try:
width = text_width or (cw if cw>0 else False) or self.parentItem().boundingRect().width()-4
except AttributeError:
width = 100
self.setTextWidth(width)
self.setHtml(text)
rect = self.boundingRect()
self.setPos(-rect.width() / 2, -rect.height() / 2) # center
これは Python/PySide ですが、それ以外の API は C++ の場合とほとんど同じです。HTML は現在、パラメーター 'text' としてinitメソッドに渡されます。QGraphicsTextItem の親は QGraphicsItem です。
助けてください、これは本当に目障りです。
乾杯、ラース。