【问题标题】:QGraphicsView backgroundQGraphics查看背景
【发布时间】:2023-03-03 14:27:01
【问题描述】:

您好,我正在尝试为我的 QGraphicsScene 获得类似 Photoshop 的行为

背景中的网格不应随着缩放的调用而调整大小。而且我必须能够使用 QPixmap::grabWidget(view) 但没有背景网格来保存图片。我可能可以在保存图片之前删除背景层,但我不确定它是否是最干净的方法。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: qt background transparency qgraphicsview


    【解决方案1】:

    问题 1

    背景中的网格不应随着缩放的调用而调整大小。

    使用QGraphicsItem::ItemIgnoresTransformations flag

    该项目忽略继承的转换(即,它的位置是 仍然锚定到其父级,但父级或视图旋转、缩放或 剪切变换被忽略)。该标志对于保持 文本标签项目水平且未缩放,因此它们仍然是 如果视图被转换,则可读。设置后,项目的视图 几何体和场景几何体将分别维护。

    要设置此标志,请在创建网格项时使用 setFlag 函数。

    问题 2

    我必须能够使用 QPixmap::grabWidget(view) 保存图片但没有 背景网格。

    在调用grabWidget 之前对网格项调用hide 函数。抓住它后,您可以通过调用show 函数再次显示它。

    【讨论】:

    • 似乎是这样,但我在场景中使用 setBackgroundBrush 作为背景,以便从小图像中重复网格图案。但是现在怎么办?是否可以从 QBrush 创建 QGraphicsItem ?
    • 自己找到了答案:QGraphicsRectItem 和 setBrush() 方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 2011-06-06
    • 2021-11-06
    • 2016-10-08
    • 2016-03-18
    • 2020-05-03
    相关资源
    最近更新 更多