将小部件添加到 QGraphicsView

Adding widgets to QGraphicsView

for(int i =0; i <shapes.size(); i++) // shapes is QList<QWidget*> of QShape
{
    shapes.at(i)->setShape(QShape::ellipse);
    QGraphicsProxyWidget* proxyWid = graphscene->addWidget(shapes.at(i));
}
view->setScene(graphscene);// view is a QGraphicsView object.

我有上面的代码,我正在使用它在图形视图场景上放置一些 Qshape。查看 qt4.8 资源,我发现需要创建一个 QGraphicsProxyWidget 来桥接场景元素与不同的 QWidget。代码有效,但我担心实现是否正确,是否正确分配了 proxywid 指针?以这种方式使用指针安全吗?我正在努力避免任何内存问题。

在此先感谢您对我的帮助

这样使用绝对安全。它与文档 link 中提到的完全一样。 Qt 有一个 parent/children 层次结构来自行删除动态分配的小部件/对象。我敢肯定,场景将删除由 "addWidget()" 在其析构函数中创建的 QGraphicsProxyWidget 对象。