。
我有这个问题。有时(但很少)我的程序在启动时崩溃。QDebugger 指出源自此代码的分段错误:
view_add_bagagli::view_add_bagagli(QWidget*parent):QWidget(parent),setBagWid(new QWidget_add_lug(this)),
setPropWid(new QWidget_add_owner(this)),
setViaWid(new QWidget_add_travel(this)){} // segm fault at this line
这是QWidget_add_travel构造函数的代码:
QWidget_add_travel::QWidget_add_travel(QWidget *parent) : Qwidget(parent),via_l(new QVBoxLayout()){
setLayout(via_l);
build();
}
但是QDebugger没有在此代码中指出分段错误。最奇怪的是分段错误有时会发生(很少),而不是每次都发生!也许这不是一个好问题,但我对这个错误感到非常困惑。
您没有在构造函数中调用QWidget
构造函数(我假设QWidget
是QWidget_add_travel
的超类)。因为没有调用超类的构造函数,所以堆上分配给小部件的数据处于未定义状态,即迟早会出现问题。
这是一个固定版本:
QWidget_add_travel::QWidget_add_travel(QWidget *parent)
: QWidget(parent), via_l(new QVBoxLayout(this))
{
build();
}
我还冒昧地通过将this
传递给布局构造函数来简化布局构造