gpt4 book ai didi

c++ - Qt : is good in a c++ class to have a widget field not declared as a pointer

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:56:56 25 4
gpt4 key购买 nike

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

第二场会很危险吗?

谢谢

编辑:问题示例:

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

最佳答案

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

您可以在 this article 中阅读更多关于 qt 对象树和所有权的信息.您可以在其中看到,执行您在编辑示例中所做的操作是不安全的。这就是您遇到崩溃的原因。

关于c++ - Qt : is good in a c++ class to have a widget field not declared as a pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8447235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com