我有一个按钮,后跟一个QGridLayout
个小部件。
我希望在每次点击按钮时显示/隐藏QGridLayout
,但阅读QGridLayout
的文档我发现没有show()
/ hide()
实施,也没有setVisible()
方法可用。
我如何实现这一目标?
答案 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