gpt4 book ai didi

c++ - QGraphicsItem只能在堆上创建?

转载 作者:行者123 更新时间:2023-11-28 06:00:36 25 4
gpt4 key购买 nike

在 QMainWindow 的构造函数中...

在堆上创建了一个新的圆并传递给场景,圆出现了,一切正常:

    QGraphicsScene * scene = new QGraphicsScene(this);
CustomGraphicsView * view = new CustomGraphicsView(scene,this);

QGraphicsEllipseItem * ellipse = new QGraphicsEllipseItem (100,100,30,30);
ellipse->setPen(QPen(Qt::green,10));

scene->addItem(ellipse);

现在我们在堆栈上创建圆圈并通过引用传递它。但是这次 cricle 永远不会出现:

QGraphicsScene * scene = new QGraphicsScene(this);
CustomGraphicsView * view = new CustomGraphicsView(scene,this);

QGraphicsEllipseItem ellipse(100,100,30,30);
ellipse.setPen(QPen(Qt::green,10));

scene->addItem(&ellipse);

我猜它在出现之前就被摧毁了。但我不明白为什么?为什么这不起作用,这种行为背后的规则是什么?

最佳答案

来自 http://doc.qt.io/qt-4.8/qgraphicsscene.html#addItem

Adds or moves the item and all its childen to this scene. This scene takes ownership of the item.

QGraphicsScene 无法取得在堆栈上创建的项目的所有权。这意味着该项目必须在堆上创建。

关于c++ - QGraphicsItem只能在堆上创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33348749/

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