在析构函数执行完成后引发异常,程序崩溃
造成异常的原因
在布局添加QSpacerItem引起的异常,使用try…catch无法捕获
QSpacerItem *spacer = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Fixed);
QHBoxLayout *hLayout2 = new QHBoxLayout;
hLayout2->addWidget(typeLabel);
hLayout2->addWidget(targetTypeBox);
hLayout2->addSpacerItem(spacer);
hLayout2->addWidget(nameLabel);
hLayout2->addWidget(boomNameBox);
hLayout2->addSpacerItem(spacer);
hLayout2->addWidget(degreeLabel);
hLayout2->addWidget(degreeBox);
hLayout2->addSpacerItem(spacer);
hLayout2->addWidget(editMenuBtn[5]);
hLayout2->addWidget(editMenuBtn[6]);
Tips
还未能搞清楚为啥添加弹簧后会出现这个异常,暂时只能在布局删掉QSpacerItem
原因是spacer多次析构,spacer多次添加在布局中,布局删除时会多次释放spacer指针。还是不能偷懒啊
QSpacerItem *spacer1 = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Fixed);
QSpacerItem *spacer2 = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Fixed);
QSpacerItem *spacer3 = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Fixed);
QHBoxLayout *hLayout2 = new QHBoxLayout;
hLayout2->addWidget(typeLabel);
hLayout2->addWidget(targetTypeBox);
hLayout2->addSpacerItem(spacer1);
hLayout2->addWidget(nameLabel);
hLayout2->addWidget(boomNameBox);
hLayout2->addSpacerItem(spacer2);
hLayout2->addWidget(degreeLabel);
hLayout2->addWidget(degreeBox);
hLayout2->addSpacerItem(spacer3);
hLayout2->addWidget(editMenuBtn[5]);
hLayout2->addWidget(editMenuBtn[6]);