gpt4 book ai didi

c++ - QGraphicsView 上的图层?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:21 25 4
gpt4 key购买 nike

您好,我正在制作一个应用程序,它从 WFS 中提取数据,然后在小部件的 QGraphicsView 上显示这些数据层。目前所有层都被渲染并添加到同一个 View 中,这意味着如果我想转动它的一个层意味着重新渲染除该层之外的所有层。

目前,我正在向图形场景中添加一个带有椭圆项和多边形项的QGraphicsScene。我想知道是否可以将多个场景添加到图形 View 或将图层添加到场景或允许我从复选框或仅隐藏图层的东西中隐藏/显示某些点/多边形的东西?

我知道这有点含糊,但我会很感激任何帮助。

谢谢。

最佳答案

您只需要一个QGraphicsScene,但这里的关键是所有QGraphicsItemQGraphicsObject 都可以作为父级。

如果您创建单个QGraphicsItemQGraphicsObject 作为父对象,它不需要绘制任何东西,但可以用作层项目的根.

因此,从 QGraphicsItem 子类创建一个 QGraphicsItemLayer 类,它不渲染任何东西,并添加在同一层中作为子级所需的所有椭圆、多边形等那个QGraphicsItemLayer

当你想隐藏一个图层时,只需隐藏父QGraphicsItemLayer对象,它的所有子对象也会被隐藏。

-------- 已编辑 --------------

继承自QGraphicsItem:-

class QGraphicsItemLayer : public QGraphicsItem
{
public:
virtual QRectF boundingRect()
{
return QRectF(0,0,0,0);
}

virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
{
}
};

创建层项目:

QGraphicsItemLayer* pLayer = new QGraphicsItemLayer;

将你想要的对象添加到图层中,注意pLayer是作为parent传递的

QGraphicsEllipseItem = new QGraphicsEllipseItem(pLayer);

假设您已经创建了 QGraphicsScene 并带有一个指向它的指针 pScene:-

pScene->addItem(pLayer);

然后当你想隐藏图层的时候

pLayer->hide();

或者显示图层:-

pLayer->show();

关于c++ - QGraphicsView 上的图层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18074798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com