当我尝试用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);发布于 2009-12-10 17:24:49
您可能需要在设置布局的小部件上调用setLayout()。
http://doc.qt.io/qt-5/qwidget.html#setLayout
正如您从文档中看到的,布局的所有权将自动设置为目标小部件。
发布于 2015-09-23 14:05:13
为了完成另一个答案,这里是setParent不能像您预期的那样工作的原因:
setParent不是在QLayout实现中,而是仅在QObject中。所以使用它只会改变指针的所有权和删除,而不会改变小部件的布局机制。
https://stackoverflow.com/questions/1877786
复制相似问题