Qt中是否有可折叠面板的标准组件?

lig*_*ist 16 user-interface qt

我正在尝试创建一个类似于Qt Designer中的可折叠侧面板(参见附件截图).它们似乎是放置在某种可折叠小部件中的QListView.

在此输入图像描述

我搜索了"Qt可折叠面板",似乎没有标准组件,或者至少没有这个名称.那么,有没有人知道任何标准Qt组件是否具有相同的行为?如果没有,任何人都可以建议我如何建造它?

谢谢.

lig*_*ist 13

我决定遵循Joey提供的链接中的一般方法.

具体来说,我为每个可折叠列表创建了一个小部件.这个小部件由顶部的QPushButton和底部的QListView组成.

然后,我将按钮单击信号连接到处理程序,以便在隐藏时将高度为0的QListView的几何与其重新出现时的原始高度之间进行切换.

我发现与Claudio建议的自定义绘制事件相比,这种方法要简单得多.此外,我可以使用QAnimationProperty为几何体的变化设置动画,使列表看起来在视图中"滑动".

但无论如何,谢谢你的回复!

  • 也许您不需要自定义绘制事件,它可能足以调整显示样式.对于顶级项目,您可以设置居中对齐,不同背景和展开时指向下方的三角形图标,并关闭根装饰.动画由QTreeView处理.优点是您只需提供树模型,无论有多少顶级项目.使用您的解决方案,如果您添加类别,则必须修改窗口小部件,并且您的项目也会分布在多个视图中.如果这与您无关,那么您的解决方案应该没问题. (2认同)