1

我没有找到解决我的问题的两个QLayouts. QHBoxLayout当我将添加新的小部件、按钮等时,我需要具有可能扩展功能的应用程序。...所以我有:一种QDialog和两种布局。现在我知道我无法隐藏布局。所以我只是托盘:

layout()->removeItem(firstlayout);
layout()->addLayout(secondLayout);

但是当我这样做时,我在位置 [0,0] 上看到了第一个布局中的所有项目。所以下一步我尝试:

for (all items in first layout) if (widget) widget->hide();

但这仅适用于QWidget我在布局中有许多不同的项目。

简单的方法是使用小部件,因为可以使用隐藏/显示,但是当我添加新项目时我需要自动扩展窗口。

4

2 回答 2

1

只需重建布局,无需同时保持两个布局。可能最清楚的是有两个(或更多)方法,首先删除当前布局,然后创建新布局,向其中添加小部件,隐藏所有要隐藏的小部件,并将其设置为当前布局。请注意,您甚至不需要为布局保留成员变量,因为 QWidget 无论如何都有它并为您提供了 setter 和 getter。

或者,如果您在不同的布局中有不同的小部件,并且实际上希望能够“切换页面”,可以这么说,只需使用QStackedWidget。或者,如果您有一个固定部分(按钮等),然后与“页面”分开,然后将“页面”放入 QStackedWidget,并保留固定部分。

于 2012-10-14T09:23:12.230 回答
0

'addLayout(secondLayout/firstLayout) ' 将自动删除其他布局,您不必删除它。如果您保留指向布局的指针(之前有 addWidget() ),您可以稍后简单地使用布局和小部件。:)

于 2012-10-14T11:16:24.830 回答