我找不到两个QLayouts
的问题解决方案。当我要添加新的小部件,按钮,....时,我需要带QHBoxLayout
的应用程序和可能的expandind ....
所以我拥有:一个QDialog
和两个布局。现在我知道我无法隐藏布局。
所以我只是托盘:
layout()->removeItem(firstlayout);
layout()->addLayout(secondLayout);
但是当我这样做时,我在第一个布局中看到了所有项目[0,0]。 所以下一步我试试:
for (all items in first layout) if (widget) widget->hide();
但这仅适用于QWidget
,我在布局中有许多不同的项目。
简单的方法是使用小部件,因为可以使用隐藏/显示,但是当我添加新项目时我需要自动扩展窗口。
答案 0 :(得分:1)
只需重建布局,就不需要同时保留两个布局。可能最清楚的是有两个(或更多)方法,首先删除当前布局,然后创建新布局,向其添加小部件,隐藏所有隐藏的小部件,并将其设置为当前布局。请注意,您甚至不需要为布局保留成员变量,因为QWidget无论如何都有,并为您提供setter和getter。
或者,如果您在不同的布局中有不同的小部件,并且实际上希望能够“切换页面”,那么只需使用QStackedWidget即可。或者,如果你有一个固定的部分(按钮等),然后分开“页面”,然后将“页面”放入QStackedWidget,并保持固定的部分。
答案 1 :(得分:0)
'addLayout(secondLayout / firstLayout)'将自动删除其他布局,您不必将其删除。如果你保留一个指向布局的指针(之前有addWidget()),你可以稍后在其中使用布局和小部件。 :)