【发布时间】:2011-09-29 21:31:36
【问题描述】:
我想知道是否有任何方法可以在父布局中修复子布局。比如……
QVBoxLayout *vbox = new QVBoxLayout;
// adding pushbuttons/layouts...
vbox->addWidget(one);
vbox->addWidget(two);
vbox->addWidget(three);
vbox->addWidget(four);
现在,这最终以添加顺序的垂直布局中的四个按钮/布局结束。但如果我删除按钮/布局“一”、“二”和“三”...
vbox->removeWidget(one);
vbox->removeWidget(two);
vbox->removeWidget(three);
完成此操作后,当您删除“四个”顶部的小部件时,“四个”按钮将在布局上向上移动。我不希望这种情况发生。
有什么方法可以即使我删除顶部的小部件/布局,我也需要最后一个小部件/布局保持在当前位置。 我如何做到这一点?
更新:嗯,我正在试验,我有点能够使用 QGridLayout 实现我想要的。这是代码,但我使用的是 QGridLayout 而不是 QVBoxLayout。
connect(one,SIGNAL(clicked()),this,SLOT(remove_btns()));
g = new QGridLayout(this);
g->addWidget(one,0,0,1,2);
g->addWidget(two,1,0,1,2);
g->addWidget(three,2,0,1,2);
g->addWidget(four,3,0,1,2,Qt::AlignBottom);
setLayout(g);
如果我删除上面的三个按钮,第四个按钮会留在原处,因为 QT::AlignBottom ,没有那个东西就行不通。 这是 SLOT remove_btns()
void test::remove_btns()
{
g->removeWidget(one);
g->removeWidget(two);
g->removeWidget(three);
delete one;
delete two;
delete three;
}
当我单击“一个”时,前三个按钮消失,第四个按钮留在原处。但如果我不给出 QT::AlignBottom ,它就不起作用。此外,这些对齐的东西对我来说是个谜,我无法找到它们究竟是如何工作的。
这绝对是不是答案...,因为我不明白它是如何工作的:P
【问题讨论】:
标签: qt