Есть ли способ получить 2 разных цвета заливки для одного объекта QGraphicsPathItem
?QGraphicsPathItem разные цвета
Например:
# Try to get a white text onto a grey rectangle
itemPath = QtGui.QPainterPath()
itemPath.setFillRule(QtCore.Qt.WindingFill)
self.setBrush(QtGui.QColor(100, 100, 100))
itemPath.addRect(-10, -60, 150, 70)
itemFont = QtGui.QFont()
itemFont.setPointSize(50)
self.setBrush(QtGui.QColor(255, 255, 255))
itemPath.addText(0, 0, itemFont, txt)
Прямо сейчас это просто использует последний цвет кисти для прямоугольника и текста. Я хотел бы покрасить их по-другому, но все же, как и у тех же QGraphicsPathItem
. Или еще лучше, чтобы дать тексту фон, поэтому его легче выбрать.
Update
Вот пример. Я хочу белый текст с красным фоном, но я получаю только последний использованный цвет кисти.
from PySide import QtGui, QtCore
class TextItem(QtGui.QGraphicsPathItem):
def __init__(self):
super(TextItem, self).__init__()
itemPath = QtGui.QPainterPath()
itemPath.setFillRule(QtCore.Qt.WindingFill)
# Create rectangle with red color
self.setBrush(QtGui.QColor(255, 0, 0))
itemPath.addRect(-10, -50, 130, 60)
self.setPath(itemPath)
# Create text with white color
itemFont = QtGui.QFont()
itemFont.setPointSize(40)
self.setBrush(QtGui.QColor(255, 255, 255))
itemPath.addText(0, 0, itemFont, 'Test!')
self.setPath(itemPath)
self.moveBy(100, 100)
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
self.resize(500, 500)
self.view = QtGui.QGraphicsView(self)
self.view.setScene(QtGui.QGraphicsScene(self))
self.view.setSceneRect(0, 0, 500, 500)
self.view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
mainLayout = QtGui.QVBoxLayout()
mainLayout.addWidget(self.view)
self.setLayout(mainLayout)
newItem = TextItem()
self.view.scene().addItem(newItem)
def run(self):
self.show()
win = Window()
win.show()
Было бы полезно предоставить пример минимального запуска: поскольку для него требуется QGraphicsView и т. Д., И поэтому нет тривиальной настройки. Но можно сделать его достаточно маленьким, чтобы публиковать здесь. – strubbly