Qt:在c ++类中很好地将widget字段声明为指针

时间:2011-12-09 14:51:35

标签: c++ qt

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

第二个字段可能有危险吗?

由于

编辑: 问题的例子:

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

1 个答案:

答案 0 :(得分:2)

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

您可以在this article中详细了解qt对象树和所有权。您可以在其中看到,在您编辑的示例中执行的操作并不安全。这就是你遇到崩溃的原因。