Принимает ли QGraphicsView право собственности на связанную графическую сцену?
Мне было интересно... если я выделю графическую сцену
QGraphicsScene* scene = new QGraphicsScene();
и связать его с графическим представлением
this->ui->graphicsView->setScene(scene);
захватывает ли графическое представление сцену? Другими словами, графическое представление удаляет сцену в ее деструкторе, или я должен удалить сцену самостоятельно?
1 ответ
Ответ - нет.
Это потому, что Qt позволяет отображать одну модель (QGraphicsScene
в данном случае) во многих представлениях, что является стандартной функцией каждой модели / представления.
Документация QGrahpicsView::setScene()
не хватает информации о том, что происходит с владельцем сцены, но ситуация такая же, как и у других; например из документации void QWebView::setPage ( QWebPage * page )
Родительский QObject предоставленной страницы остается владельцем объекта. Если текущий документ является дочерним по отношению к веб-представлению, он будет удален.