2013-03-04 108 views
2

我有2个布局 - layout1layout2。假设两者在其中的小部件类型数量方面完全不同。现在我有2个按钮but1but2。当but1被挂起时layout1被激活,当but2被点击时layout2被激活。 我如何在Qt中实现这一点?在Qt中切换布局

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

回答

1
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,这正是我所用的。

+0

其实我期待的东西像stackedWidget-> addLayout(layout1);其中我的布局包含了很多不同的小部件和布局。例如,让我们说:在layout1中,我有button1和label1。类似于layout2。我如何使用QStackedWidget在2种布局之间切换? – sudeepdino008 2013-03-05 07:35:28

+0

由于布局是两个小部件的子项,所以QWidgets parentLayout1和parentLayout2在显示它们时将显示布局。我应该补充一点,无论你使用什么QWidget作为父项来填充两个布局,那么当显示父窗口部件时,布局中的所有内容都将显示出来。所以当我说'stackedWidget-> widget(1) - > show();'我正在做的是显示第一个具有子布局的小部件,这将显示布局。 – 2013-03-05 16:52:29

+0

啊!谢谢。现在这是有道理的。 – sudeepdino008 2013-03-05 18:55:04

0

您应该使用QStackedLayout或QStackedWidget这一点。