如何在QT中逻辑分组小部件以便于显示/隐藏?

时间:2015-02-17 03:40:30

标签: c++ qt

我在父母中对一组小部件进行分组,然后通过隐藏/显示父级来控制这些小部件的可见性/流量。这是实现我想要做的事情的好方法吗?这是代码:

QVBoxLayout* l = new QVBoxLayout(this);
// .....

QWidget* toolset_frame = new QWidget(this);

{
   QVBoxLayout* l = new QVBoxLayout(toolset_frame);

   l->addWidget(new QLabel(tr("Stuff")));
   this->Toolset = new QLineEdit(toolset_frame);
   l->addWidget(this->Toolset);
}

l->addWidget(toolset_frame);

// Call toolset_frame->hide() and this hides everything inside the parent

这个解决方案的问题是孩子的体积略有缩小,我认为这是由于父母的一些填充或边框。理想情况下,子项应该看起来好像它们不包含在中间对象中,而是与父项一起流动。在这种情况下,儿童的横向尺寸不应受到影响。

1 个答案:

答案 0 :(得分:1)

http://doc.qt.io/qt-5/qtwidgets-dialogs-extension-example.html

此示例显示您的方法是正确的。使用小部件包含要隐藏的元素,等等。

如果您希望边距/内容边距/填充较小,请更改它。

// in finddialog.cpp 
extensionLayout->setMargin(0);

要快速建模要更改的属性以使其看起来正确,请尝试在Qt Designer中进行布局,并修改属性编辑器以获得您想要的外观。

希望有所帮助。