我在MainWindow中设置了WA_DeleteOnClose
小部件属性。
setAttribute(Qt::WA_DeleteOnClose);
然而,每当我关闭那个主窗口时,我的析构函数中都会出现一个段错误,它只有delete ui;
简而言之,在Creator中创建了一个Qt4 GUI应用程序,将setAttribute(Qt::WA_DeleteOnClose);
添加到构造函数中,程序现在在退出时崩溃。
答案 0 :(得分:10)
你是第一次或第二次在析构函数中遇到段错误吗?请记住,您的主窗口析构函数应该只运行一次。也就是说它应该运行 ,因为堆栈展开,或因为WA_DeleteOnClose
,而不是两者。
main()
的堆栈上。因此,当main()
返回时,主窗口将被销毁。
答案 1 :(得分:0)
this link提供了很好的解决方案建议。
我我认为最好的方法是将QPointer定义为指向obj并每次使用它测试NULL,因此,当UI obj被破坏时,指针将直接设置为NULL。 “ QPointer为QObject提供了受保护的指针。您可以使用它来保存对对话框的引用,并且在删除对话框时,该指针将自动设置为NULL。”