【问题标题】:Using items in the background of a QGraphicsScene在 QGraphicsScene 的背景中使用项目
【发布时间】:2010-01-24 17:25:14
【问题描述】:

我有一个 QGraphicsScene,我最初在 drawBackground() 函数中绘制了背景。然而,这需要大量的计算并且结果非常慢,所以我创建了一堆项目。这具有预期的加速。

我的问题:有没有办法将这些项目视为背景?如果我将它们视为背景项目,这有什么关系吗?

谢谢

【问题讨论】:

    标签: qt qgraphicsview


    【解决方案1】:

    QGraphicsScene 分为三层(参见 Qt 文档):

    • QGraphicsScene::ItemLayer

    项目层。 QGraphicsScene 渲染 所有项目都在这一层通过调用 虚函数drawItems()。这 项目层是在之后绘制的 背景层,但之前 前景层。

    • QGraphicsScene::BackgroundLayer

    背景层。 QGraphicsScene 在此渲染场景的背景 通过调用虚函数层 绘制背景()。背景层 首先绘制所有层。

    • QGraphicsScene::ForegroundLayer

    前景层。 QGraphicsScene 在此渲染场景的前景 通过调用虚函数层 绘制前景()。前景层 在所有图层的最后绘制。

    因此,没有合法 方法可以将项目放入背景层。 但是,您可以使用 QGraphicsItem Sorting 将一些项目放在其他项目之后,使它们显示为 背景

    【讨论】:

    • 我想我仍然可以将这些东西放在 drawBackground() 中,但是缓存所有计算出来的东西,因为它是静态的。但是,这导致我不喜欢背景的两个阶段。你知道用物品代替有什么缺点吗?它们是一堆带有一些透明胶片的文本和矩形项目..
    • 我认为最好的方法是使用物品。不知道有什么缺点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多