我有这个问题。 有时(但很少)我的程序在启动时崩溃。 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没有在此代码中指出分段错误。 最奇怪的是有时(很少)发生分段错误,而不是每次都发生! 也许这不是一个好问题,但我对此错误感到非常困惑。
答案 0 :(得分:1)
您没有在构造函数中调用QWidget
构造函数(我假设QWidget
是QWidget_add_travel
的超类)。由于未调用超类的构造函数,因此在窗口上为您的窗口小部件分配的数据处于未定义 状态,即迟早会出现故障。
这是一个固定版本:
QWidget_add_travel::QWidget_add_travel(QWidget *parent)
: QWidget(parent), via_l(new QVBoxLayout(this))
{
build();
}
我还可以通过将this
传递给布局构造函数来自由地简化布局构建。