我试图找到一种方法标记QGraphicsScene
的边框,并使其在QGraphicsView
内可调整大小,以创建类似于Microsoft Paint的内容。
换句话说,我当前的QGraphicsView
看起来像这样:
但我的形象只有这么大,如红色框所示:
我希望我的QGraphicsView
像这样(小黑框是用于调整画布大小的角色):
从功能上讲,我希望它类似于MS Paint :
画布(场景)可调整大小,窗口(视图)上的滚动条会在需要时显示。蓝色背景颜色(纯灰色背景)出现在画布后面。
我将如何完成这项工作?
为了尝试获得灰色背景,我一直在试验QGraphicsView.setBackgroundBrush()
和QGraphicsScene.setBackgroundBrush()
。我已经了解到QGraphicsView
的背景画笔完全覆盖QGraphicsScene
的背景画笔(如果已设置)。即使我只为QGraphicsScene
设置背景画笔,该背景画笔也会延伸到图像的原始边界上。
这是 a link to my test code 。 感谢帮助!
答案 0 :(得分:0)
我必须与你的构造函数斗争... dunno如果它适用于Windows,但必须使它与Linux一起工作。试试:
def setPixmap(self, pixmap):
if self.pixmap_item:
self.removeItem(self.pixmap_item)
self.pixmap_item = self.addPixmap(pixmap)
self.setPixBackGround()
def setPixBackGround(self):
# put Background rect for image
pixR = self.pixmap_item.pixmap().rect()
bgRectangle = self.addRect(pixR.x()-10, pixR.y()-10,
pixR.width()+20, pixR.height()+20)
# set color and Z value to put it behind image
bgColor = QColor(58, 176, 176)
bgRectangle.setBrush(bgColor)
bgRectangle.setZValue(-.1)
# take coordinates for brabbers
bgR = bgRectangle.rect()
grab1R = QRect(-5,-5,10,10)
# put grabbers as wish...
grab1 = self.addRect(grab1R)
grab1.setPos(bgR.topLeft())
grab2 = self.addRect(grab1R)
grab2.setPos(bgR.topRight())
# ....etc....