【问题标题】:How to remove all items from main layout?如何从主布局中删除所有项目?
【发布时间】:2019-08-21 17:52:54
【问题描述】:

我有带有 QWidget *mainWidget 的 MainWindow。此小部件具有设置布局 - QLayout *mainLayout。当我按下“下一步”按钮时,我想从所有项目中清除 mainLayout(我需要再次使用 mainLayout,但需要使用不同的项目),当我再次按下“返回”按钮时,我需要清除布局并将其与其他项目一起使用。

我尝试将 while 循环与 mainWidget->layout()->TakeAt(0) 一起使用,但它不起作用(我认为我的 while 循环有问题,因为我的 mainLayout 有几列和几行)。我是初学者,但在理解内存分配等方面存在问题。

【问题讨论】:

  • 你应该看看 QStackedLayout 和 QStackedWidget。如果您需要带有页面的小部件,QWizard 将是更好的选择。
  • 非常感谢!这是我需要的!今天你是我的英雄:D

标签: c++ qt layout widget


【解决方案1】:

删除所有小部件:它们会自动将自己从布局中删除。您还可以在主小部件上设置不同的布局,然后向其添加新小部件。移动到上一页时,在其上设置之前的布局。但是,您必须管理小部件的可见性:它们仍然是可见的。

但这些都不是必需的:每个页面都应该是它自己的小部件,当你希望它显示时,你应该是主小部件的父级,而当它被隐藏时,它是非父级的。主布局可以是任何简单的东西,比如QVBoxLayout,因为它只包含一个小部件——当前页面。

然后:您确定没有支持小部件页面的小部件或布局吗?查看文档,您可能会感到惊喜:)

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2014-06-09
    • 1970-01-01
    • 2016-09-30
    • 2014-09-15
    相关资源
    最近更新 更多