C++ Qt:在c+中表现良好+;类以使小部件字段未声明为指针

C++ Qt:在c+中表现良好+;类以使小部件字段未声明为指针,c++,qt,C++,Qt,第二个领域可能是危险的吗 谢谢 编辑: 问题示例: class Foo : public QMainWindow { MyWidget *alertDlg_; MyWidget alertDlg2_; }; 是的,因为Qt有它自己的内存管理,如果alertDlg2_uuu有一个父级,您将得到双重删除 您可以在中阅读有关qt对象树和所有权的更多信息。您可以从中看出,按照您在编辑的示例中所做的操作是不安全的。这就是为什么会发生崩溃。因此,如果alertDlg2_uuo的父

第二个领域可能是危险的吗

谢谢

编辑: 问题示例:

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

是的,因为Qt有它自己的内存管理,如果alertDlg2_uuu有一个父级,您将得到双重删除


您可以在中阅读有关qt对象树和所有权的更多信息。您可以从中看出,按照您在编辑的示例中所做的操作是不安全的。这就是为什么会发生崩溃。

因此,如果alertDlg2_uuo的父级为Foo,则不可能出现问题?如果alertDlg2_uuo声明为Foo,则不需要为其设置父级。当Foo被破坏时,alterDlg2_uu也将被破坏。-1。Qt对象可以按照声明安全使用。通常的模式是设置父对象或依赖另一种形式的清理。但是,如果在父对象之前清理子对象,则设置父对象也是安全的。我相当确定double Delete语句是错误的。-1。如果alertDlg是Foo对象的子对象,则声明非指针字段是可以的。毕竟,成员将在基类之前被删除。你提供的链接似乎很好地解释了这一点。
{
    QPushButton button("button"); 
    QWidget widget;
    button.setParent(&widget);
} // crash