gpt4 book ai didi

qt - QGraphicsScene::~QGraphicsScene() 段错误

转载 作者:行者123 更新时间:2023-12-04 18:34:59 27 4
gpt4 key购买 nike

再会!

对于 Qt 4.7.3,下面的示例在 QGraphicsScene::~QGraphicsScene() 调用时崩溃:

#include <QCoreApplication>
#include <QGraphicsScene>

int main( int argc, char* argv[] )
{
// replace this with QObject app; and no problems
QCoreApplication app( argc, argv );

new QGraphicsScene( &app );

return 0;
}

有任何想法吗?

更新:

Bug report创建的。

最佳答案

当一个 QGraphicsScene实例被构造,它将自身附加到存储在单个 QApplication 的私有(private)成员中的列表中实例,当它被删除时,它也会从该列表中删除自己:

QGraphicsScene::~QGraphicsScene()
{
Q_D(QGraphicsScene);

// Remove this scene from qApp's global scene list.
qApp->d_func()->scene_list.removeAll(this);

...
}

当应用程序对象被销毁时,继承的基类的析构函数被递归调用,所以, ~QApplication()来电 ~QCoreApplication()它本身调用 ~QObject() .

子对象的实际删除在 ~QObject() 中完成。 .这意味着在场景对象被销毁时,所有 QApplication成员已经被销毁,所以 ~QGraphicsScene()尝试访问列表时崩溃。

关于qt - QGraphicsScene::~QGraphicsScene() 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929981/

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