Qt中的交换布局

Qt中的交换布局,qt,layout,qt4,Qt,Layout,Qt4,我有两个布局-layout1和layout2。假设两者在小部件类型的数量上完全不同。现在我有两个按钮but1和but2。当点击but1时layout1被激活,当点击but2时layout2被激活。 如何在Qt中实现这一点 注意: 我不想删除我的小部件(或布局)为此,您应该使用QStackedLayout或QStackedWidget QStackedWidget* stackedWidget = new QStackedWidget; QWidget* parentLayout1 = new Q

我有两个布局-
layout1
layout2
。假设两者在小部件类型的数量上完全不同。现在我有两个按钮
but1
but2
。当点击
but1
layout1
被激活,当点击
but2
layout2
被激活。 如何在Qt中实现这一点

注意:
我不想删除我的小部件(或布局)

为此,您应该使用QStackedLayout或QStackedWidget

QStackedWidget* stackedWidget = new QStackedWidget;
QWidget* parentLayout1 = new QWidget;
QWidget* parentLayout2 = new QWidget;
QGridLayout* layout1 = new QGridLayout(parentLayout1);
QGridLayout* layout2 = new QGridLayout(parentLayout2);
stackedWidget->addWidget(parentLayout1);
stackedWidget->addWidget(parentLayout2);
stackedWidget->widget(1)->show();

然后根据需要隐藏和显示它们,我自己尝试了QStackedLayout来解决这个问题,但是我很难让它工作,但是上面的解决方案应该可以很好地工作。我在一个项目中使用了它,我目前正在工作,切换小部件的性能可能与QStackedLayout相同。很明显,我给你的只是代码的一部分,但这应该对你有所帮助。任何后续的问题都让我知道。此外,您可以使用任何类型的布局,不必是QGridLayout,这正是我所使用的。

实际上,我期待的是stackedWidget->addLayout(layout1);其中我的布局包含很多不同的小部件和布局。例如,假设:在布局1中,我有按钮1和标签1。布局2也是如此。如何使用QStackedWidget在这两个布局之间切换?因为布局是这两个小部件的子项,所以当您显示QWidgets parentLayout1和parentLayout2时,它将显示布局。我应该补充一点,当两个布局都有一个QWidget作为父控件时,无论你用什么填充它们,那么当显示父控件时,布局中的所有内容都将显示出来。所以当我说
stackedWidget->widget(1)->show()我正在做的是显示第一个具有子布局的小部件,这将显示布局。