gpt4 book ai didi

c++ - Qt中类成员变量的内存管理

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:00 24 4
gpt4 key购买 nike

我正在基于 Qt 的 QGraphicsScene 功能使用 Qt 编写图像查看器。我在名为 ImageModel 的类中创建每个图像的模型,并在名为 ImageView 的类中管理图像的显示。 ImageView类如下(只是感兴趣的部分):

class ImageView
{
public:
ImageView(QWidget *parent);

QGraphicsView * getView() {return view; }

private:

//qgraphics scene elements
QGraphicsScene *scene;
QGraphicsView *view;
QGraphicsPixmapItem *curItem;


};

类的构造函数如下:

ImageView::ImageView(QWidget *parent)
{

//create scene and view with parent the main window
//such that the memory management is done by qt
scene = new QGraphicsScene(parent);
view = new QGraphicsView(parent);

view->setScene(scene);
}

我在 QMainWindow 的派生中也有指向 ImageView 的指针。

我的问题是:我应该让 Qt 通过将我的主窗口设置为 View 和场景的父窗口来进行内存管理,还是我应该自己处理内存管理(让 View 和场景没有父窗口并删除它们在类析构函数中)?在这种情况下什么是好的策略?

最佳答案

如果您希望 View 嵌套在主窗口中,那么您将使其成为子窗口。

对于您的一般性问题,这实际上归结为您所需的对象生命周期和所有权语义。如果您不希望 View /场景比主窗口长寿,那么是的,他们应该是 child 。您仍然可以选择通过其他方式提前删除它们。

关于c++ - Qt中类成员变量的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766026/

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