2个解决方案:
1/ 手动设计
码头:
*---------------QDockWidget---------------*
| |
| *-------------QScrollArea-------------* |
| | | |
| | *--------ExpandableWidget---------* | |
| | | | | |
| | | | | |
| | | | | |
| | *---------------------------------* | |
| | *--------ExpandableWidget---------* | |
| | | | | |
| | | | | |
| | | | | |
| | *---------------------------------* | |
| | *--------ExpandableWidget---------* | |
| | | | | |
| | | | | |
| | | | | |
| | *---------------------------------* | |
| | *--------VerticalSpacer-----------* | |
| | | | |
| | | | |
| *-------------------------------------* |
| |
*-----------------------------------------*
可扩展小部件:
ArrowL
是一个QLabel
仅包含指示小部件是折叠还是展开的箭头。您将自定义小部件设置为所需的输入小部件,例如 int 输入。您在折叠时隐藏此小部件,并在展开时显示它。
*------------ExpandableWidget-------------*
| |
| *-------------QVBoxLayout-------------* |
| | | |
| | *-----------QHBoxLayout-----------* | |
| | | *-ArrowL-* *------QLabel------* | | |
| | *---------------------------------* | |
| | | |
| | *---------Custom QWidget----------* | |
| | | | | |
| | *---------------------------------* | |
| | | |
| *-------------------------------------* |
| |
*-----------------------------------------*
优点:您可以完全控制扩展坞的行为方式。缺点:您必须自己在全局小部件中实现此层次结构,以确保其一致性。
2/ QtPropertyBrower
QtPropertyBrowser是现已停产的 Qt 解决方案(许可证)的一部分。它使您几乎可以在几行代码中完成您想要的事情。