与QLayout-> setParent有什么关系

时间:2009-12-09 23:51:30

标签: qt

当我尝试使用setParent更改布局的位置时,结果是无效的或奇数。

以下作品:

ui.txDiag_1->setParent(ui.tab_2);
movingHlayout = new QVBoxLayout(ui.tab_2);
movingHlayout->setSpacing(3);
movingHlayout->setMargin(3);
movingHlayout->setObjectName(QString::fromUtf8("movingHlayout"));
movingHlayout->addWidget(ui.txDiag_1);

但是这并没有(movingHlayout已经预先构建):

ui.txDiag_1->setParent(ui.tab_2);
movingHlayout->setParent(ui.tab_2);
movingHlayout->setSpacing(3);
movingHlayout->setMargin(3);
movingHlayout->setObjectName(QString::fromUtf8("movingHlayout"));
movingHlayout->addWidget(ui.txDiag_1);

2 个答案:

答案 0 :(得分:2)

您可能需要在要设置布局的小部件上调用setLayout()。

http://doc.qt.io/qt-5/qwidget.html#setLayout

从文档中可以看出,布局的所有权将自动设置为目标小部件。

答案 1 :(得分:0)

要完成另一个答案,以下是setParent无效的原因:

setParent不在QLayout实施中,而只在QObject中。所以使用它只会改变指针的所有权和删除,而不是小部件布局机制。