我是想批量往一个布局器中写入控件,QLabel,QWidget都有,大概二十个,一行一行的写太费劲了。
Qt Debug Assertion Failed!报错原因估计是野指针或者是内存泄漏,因为我用数组经常就有内存访问越界的问题。如图:
QVBoxLayout* layout = new QVBoxLayout;//new了一个布局器
QLabel* labels = new QLabel[3];//这里new了一个三个QLabel的数组;
QStringList qstrList;
qstrList<addWidget(&labels[i]);//布局器中加入QLabel
}
是可以显示出来的点上那个关闭窗口的X就会出现报错,如图:
我这labels变量不是成员变量不牵扯到关闭窗口前的析构的问题,换成release关闭窗口也会有程序异常结束的字样。
我之前用C++数组用习惯了,Qt批量设置组件还是换成QVector和QList之类的容器比较好。解决后的代码:
QVBoxLayout* layout = new QVBoxLayout;//new了一个布局器 QVectorlabels(3);//1.现在知道要用三个所以我限定了三个,防止内存拷贝。也可以试试QList容器 //2.容器中的类型不能是组件,只能是组件的指针。 QStringList qstrList; qstrList< addWidget(labels.at(i)); }
再关闭窗口就没有报错了。之前的报错我认为是布局器的原因,之前看到QtCreate给过我警告,不要new控件数组。



