【发布时间】:2013-02-27 02:39:54
【问题描述】:
我正在尝试找到一种方法来标记QGraphicsScene 的边框,并使其在QGraphicsView 内调整大小,以创建类似于Microsoft Paint 的东西。
换句话说,我当前的QGraphicsView 看起来像这样:
但我的图片只有这么大,如红框所示:
我希望我的QGraphicsView 是这样的(小黑框是调整画布大小的抓角器):
在功能上,我希望它类似于 MS Paint:
画布(场景)可调整大小,窗口(视图)上的滚动条会在需要时出现。蓝色背景颜色(纯灰色背景)出现在画布后面。
我将如何实现这一目标?
为了尝试获得灰色背景,我一直在尝试使用 QGraphicsView.setBackgroundBrush() 和 QGraphicsScene.setBackgroundBrush()。我了解到QGraphicsView 的背景画笔完全覆盖QGraphicsScene 的背景画笔(如果设置了一个)。即使我只为QGraphicsScene 设置背景画笔,该背景画笔也会超出图像的原始边界。
这里是 a link to my test code。 感谢您的帮助!
【问题讨论】:
-
你使用 setSceneRect 吗?
-
@Alex 我试过了,但这不是我想要的。
QGraphicsView.setSceneRect()限制了场景的可滚动区域,但我希望能够缩小以查看整个场景,并且在场景边界上具有灰色背景。QGraphicsScene.setSceneRect()似乎没有任何影响。 -
SceneRect 应用于场景确实将您的坐标系定位在视图内,但您可以拖动超出其尺寸。使用 scale() 在视图中,您可以轻松缩放。您是否尝试将 rect 项目放在后面并将其用作框架?抱歉,如果我不明白您的问题...如果您发布示例代码,可能会更容易复制 - 尝试解决问题。
-
@Alex 我不确定我是否解释得足够清楚。我已经用测试代码和更详细的解释更新了我的原始帖子。请看一看!
标签: resize pyside qgraphicsview qgraphicsscene