我正在使用基于 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 通过将我的主窗口设置为视图和场景的父级来进行内存管理,还是我应该自己处理内存管理(让视图和场景没有父级并在课堂上删除它们析构函数)?在这种情况下,什么是好的策略?