Qt:在c++类中有一个未声明为指针的小部件字段是很好的


class Foo : public QMainWindow
{
    MyWidget  *alertDlg_; 
    MyWidget   alertDlg2_; 
};

第二个字段有危险吗?

感谢

编辑:问题示例:

{
    QPushButton button("button"); 
    QWidget widget;
    button.setParent(&widget);
} // crash 

是的,因为Qt有它自己的内存管理,如果alertDlg2_有一个父节点,你会得到双重删除。

您可以在本文中了解更多关于qt对象树和所有权的信息。你可以从中看到,做你在编辑过的例子中所做的是不安全的。这就是为什么你会崩溃。

最新更新