有没有办法为对象添加背景颜色QGraphicsTextItem
?
我创建了一个QGraphicsScene
, 并且需要在其中显示文本。我创建了一个QGraphicsTextItem
来完成这项工作。但是,它的背景不是很清晰,所以我希望突出显示它,或者设置背景颜色以使其更明显。我在文档中没有找到任何这样做的东西。
如果有更好的选择,我想避免这样做。感谢您的回答!
有没有办法为对象添加背景颜色QGraphicsTextItem
?
我创建了一个QGraphicsScene
, 并且需要在其中显示文本。我创建了一个QGraphicsTextItem
来完成这项工作。但是,它的背景不是很清晰,所以我希望突出显示它,或者设置背景颜色以使其更明显。我在文档中没有找到任何这样做的东西。
如果有更好的选择,我想避免这样做。感谢您的回答!
你有几个选择。
最简单的方法是设置具有所需样式的 HTML:
htmlItem = QtGui.QGraphicsTextItem()
htmlItem.setHtml('<div style="background:#ff8800;">html item</p>')
另一种方法是子类化QGraphicsTextItem
并使用方法进行自定义背景paint
。
class MyTextItem(QtGui.QGraphicsTextItem):
def __init__(self, text, background, parent=None):
super(MyTextItem, self).__init__(parent)
self.setPlainText(text)
self.background = background
def paint(self, painter, option, widget):
# paint the background
painter.fillRect(option.rect, QtGui.QColor(self.background))
# paint the normal TextItem with the default 'paint' method
super(MyTextItem, self).paint(painter, option, widget)
这是一个演示两者的基本示例:
import sys
from PySide import QtGui, QtCore
class MyTextItem(QtGui.QGraphicsTextItem):
def __init__(self, text, background, parent=None):
super(MyTextItem, self).__init__(parent)
self.setPlainText(text)
self.background = background
def paint(self, painter, option, widget):
# paint the background
painter.fillRect(option.rect, QtGui.QColor(self.background))
# paint the normal TextItem with the default 'paint' method
super(MyTextItem, self).paint(painter, option, widget)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
w = QtGui.QGraphicsView()
s = QtGui.QGraphicsScene()
htmlItem = QtGui.QGraphicsTextItem()
htmlItem.setHtml('<div style="background:#ff8800;">html item</p>')
myItem = MyTextItem('my item', '#0088ff')
s.addItem(htmlItem)
myItem.setPos(0, 30)
s.addItem(myItem)
w.setScene(s)
w.show()
sys.exit(app.exec_())
试试这个:
item = QtGui.QGraphicsTextItem()
item.setFormatTextColor("#value")