如何完全隐藏QGridLayout?

时间:2010-03-03 10:58:43

标签: c++ qt

我有一个按钮,后跟一个QGridLayout个小部件。 我希望在每次点击按钮时显示/隐藏QGridLayout,但阅读QGridLayout的文档我发现没有show() / hide()实施,也没有setVisible()方法可用。

我如何实现这一目标?

3 个答案:

答案 0 :(得分:7)

布局仅影响添加到它们的小部件的大小/位置 - 用于关注父小部件的可见性(以及其他任何事件 - 事件处理,焦点,启用+禁用),如上所述。 QLayout :: parentWidget()为您提供了拥有布局的小部件,然后您可以显示和隐藏它。

答案 1 :(得分:6)

您没有提到您正在使用的Qt版本。 (我正在看4.4 documentation。)

我没试过这个,但这里有两个想法:

  • QGridLayout继承了函数QLayoutItem::widget()。如果您的布局是窗口小部件,则会返回QWidget*,您可以在其上调用show()hide()
  • 如果您的QGridLayout不是QWidget,则可以将其嵌套在QWidget中,您可以show() / hide()替换该小部件。< / LI>

答案 2 :(得分:3)

我假设你有多个QGridLayout个实例,根据点击的按钮,只有一个可见。您可以使用QStackedWidget

  

QStackedWidget类提供了一个   堆栈的小部件,其中只有一个小部件   一次可见。

然后,对于QStackedWidget中的每个小部件,您应该关联一个单独的QGridLayout

有关详细信息,请参阅Qt documentation