在Qt MainWindow上设置WA_DeleteOnClose属性时,程序在删除ui指针时崩溃

Jak*_*les 7 c++ qt qt4 segmentation-fault

WA_DeleteOnClose在MainWindow中设置了widget属性.

setAttribute(Qt::WA_DeleteOnClose);
Run Code Online (Sandbox Code Playgroud)

但是,每当我关闭那个主窗口时,我都会在它的析构函数中得到一个段错误 delete ui;

简而言之,在Creator中创建了一个Qt4 GUI应用程序,添加setAttribute(Qt::WA_DeleteOnClose);到构造函数,程序现在在退出时崩溃.

MSa*_*ers 10

你是第一次或第二次在析构函数中遇到段错误吗?请记住,您的主窗口析构函数应该只运行一次.也就是说,它应该运行要么因为堆栈展开的,或者WA_DeleteOnClose,而不是两个.

IIRC,Creator会把主窗口放在堆栈上main().因此,main()返回时主窗口被破坏.

  • 事实证明我偶然在堆栈上声明了我的`MainWindow`类而不是`main()`中的堆.你的回答让我意识到了这一点; 谢谢.:) (5认同)