【发布时间】:2013-02-18 22:36:43
【问题描述】:
我有 2 个布局 - layout1 和 layout2。假设两者在其中的小部件类型数量方面完全不同。现在我有 2 个按钮 but1 和 but2。当but1被点击时layout1被激活,当but2被点击时layout2被激活。
我怎样才能在 Qt 中实现这一点?
注意: 我不想删除我的小部件(或布局)
【问题讨论】:
我有 2 个布局 - layout1 和 layout2。假设两者在其中的小部件类型数量方面完全不同。现在我有 2 个按钮 but1 和 but2。当but1被点击时layout1被激活,当but2被点击时layout2被激活。
我怎样才能在 Qt 中实现这一点?
注意: 我不想删除我的小部件(或布局)
【问题讨论】:
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->widget(1)->show(); 我正在做的是显示第一个具有子布局的小部件,这将显示布局。
您应该为此使用 QStackedLayout 或 QStackedWidget。
【讨论】: