2

运行我的 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:
    // ...
}
4

0 回答 0