Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QLayout是怎么回事?>;setParent_Qt - Fatal编程技术网

Qt QLayout是怎么回事?>;setParent

Qt QLayout是怎么回事?>;setParent,qt,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("movingHlayou

当我试图用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);
但事实并非如此(MovingLayout已提前构建):


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


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

要完成另一个答案,以下是
setParent
无法按预期工作的原因:

setParent
不在
QLayout
实现中,而仅在
QObject
中。因此,使用它只会更改指针的所有权和删除,而不会更改小部件的布局机制

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);