【问题标题】:switching layouts in Qt在 Qt 中切换布局
【发布时间】:2013-02-18 22:36:43
【问题描述】:

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

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

【问题讨论】:

    标签: qt layout qt4


    【解决方案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,这正是我使用的。

    【讨论】:

    • 其实我期待像stackedWidget->addLayout(layout1);其中我的布局包含很多不同的小部件和布局。例如,假设:在 layout1 中,我有 button1 和 label1。 layout2 也是如此。如何使用 QStackedWidget 在两种布局之间切换?
    • 因为布局是两个小部件的子级,所以当你显示 QWidgets parentLayout1 和 parentLayout2 时,它会显示布局。我应该补充一点,当两个布局具有 QWidget 作为父级时,无论您使用它们填充什么,布局中的所有内容都将在显示父级小部件时显示。所以当我说stackedWidget->widget(1)->show(); 我正在做的是显示第一个具有子布局的小部件,这将显示布局。
    【解决方案2】:

    您应该为此使用 QStackedLayout 或 QStackedWidget。

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2011-02-09
      • 2013-10-12
      • 1970-01-01
      • 2014-10-05
      • 2016-04-20
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多