我在画布上有一些小图形项,需要显示一些文本。当出现换行时,垂直行间距过大,导致文本被绘制在图形项之外。我一直在寻找一种在 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 当前作为参数“文本”传递给init方法。QGraphicsTextItem 的父对象是 QGraphicsItem。
请帮忙,这真的很碍眼。
干杯,拉斯。