运行我的 qt 程序时出现错误。(在我添加这个新函数以做某事之前,它曾经可以正常工作并且可以完美编译void perfectPanel::aaaf
。 )错误消息是,
QLayout::parentWidget: A layout can only have another layout as a parent.
Segmentation fault (core dumped)
发生这种情况是因为我试图向我的布局添加一个新小部件gridLayoutSub_
,但布局gridLayoutSub_
位于另一个名为gridLayout_
void perfectPanel::aaaf()
{
// some codes ...
gridLayoutSub_->addWidget(kkk, 6, 0, 1, 1);
}
任何人都知道出了什么问题以及如何解决?
更多细节:这两种布局的声明
在 mymainwindow 类中,有一个停靠小部件。为了自定义这个停靠小部件,我编写了一个名为的新类perfectPanel
,它是 的子类QWidget
,然后在 this 的构造函数中perfectPanel
,我有以下代码:
groupBoxA = new QGroupBox(tr("groupBoxA"));
QGridLayout* gridLayoutA = new QGridLayout(groupBoxA);
VBoxLayoutPanel = new QVBoxLayout(this);
VBoxLayoutPanel->addWidget(groupBoxA);
groupBoxA->setLayout(gridLayoutA);
setLayout(VBoxLayoutPanel);
如您所见,gridLayoutA
在另一个布局内VBoxLayoutPanel
。我提到的错误发生在我稍后在 function 中尝试 addWidget 到 gridLayoutA 时void perfectPanel::aaaf
,期间:
gridLayoutA->addWidget(kkk, 6, 0, 1, 1);
perfectPanel
类的标题
class perfectPanel : public QWidget
{
Q_OBJECT
public:
explicit perfectPanel(QWidget *parent = 0);
~perfectPanel();
private:
// ...
}