У меня проблема с краской и рисунком QGraphicsView/Scene
. Я рисую кучу QLineF as background overriding
QGraphicsView :: drawBackGround`. Однако, когда я пытаюсь изменить цвет фона, ничего не происходит.Картина на QGraphicsView с использованием drawBackground
Вот минимальный пример того, что я делаю:
import sys
import platform
import ctypes
from PySide import QtCore, QtGui
from mygv import Ui_Dialog
import sys
class myView(QtGui.QDialog):
def __init__(self, parent = None):
QtGui.QDialog.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.view.drawBackground = self.drawBackground
self.ui.view.wheelEvent = self.wheelEvent
self.scene = QtGui.QGraphicsScene()
self.ui.view.setScene(self.scene)
self.scene.addEllipse(0,0,100,100)
def drawBackground(self, painter, rect):
bbrush = QtGui.QBrush(QtGui.QColor(255,170,255), QtCore.Qt.SolidPattern)
painter.setBackgroundMode(QtCore.Qt.OpaqueMode)
pen = QtGui.QPen(QtGui.QColor(46, 84, 255))
pen.setWidth(5)
painter.setPen(pen)
line1 = QtCore.QLineF(0,0,0,100)
line2 = QtCore.QLineF(0,100,100,100)
line3 = QtCore.QLineF(100,100,100,0)
line4 = QtCore.QLineF(100,0,0,0)
painter.setBackground(bbrush)
painter.drawLines([line1, line2, line3, line4])
def wheelEvent(self,event):
factor = 1.41 ** (event.delta()/240.0)
self.ui.view.scale(factor, factor)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
diag = myView()
diag.show()
diag.ui.view.centerOn(50,50)
app.exec_()
Ui_dialog просто стандартный диалог генерируется из QDesigner с членом QGraphicsView под названием «Вид».
Это просто пример проблемы. Мне нужно иметь возможность менять цвет фона систематически во время выполнения моего приложения.
Что мне не хватает или делает (явно) неправильно?
спасибо! Он работает как ожидалось !! – user20679