c++ - Qt 自定义列表

标签 c++ qt unity3d

我最近开始使用 Qt,因为它比使用 win32 更直观,我一直在玩弄一堆不同的小部件,我不想尝试更复杂的东西,但一直没能在 Qt 引用资料或 Google 上找到与我想要的内容相关的任何内容。

我正在尝试做一些类似 Unity3D Inspector box 的事情,到目前为止我已经知道我会怎么做,但似乎没有一个需要的组件。

我会有一个可停靠的小部件,在这里我会有一个可滚动的区域,此时我希望将“组件”添加到这个可滚动的区域,这些组件都会有所不同,它们应该具有扩展的能力/collapse 成一行(组件的标识符),展开后应该能够在其中包含多个小部件,例如标签、复选框、其他可折叠部分等。

我在 google 中寻找的内容的措辞肯定不当,因为它似乎没有与我想要的东西相似的东西,但这似乎是一个普遍的想法。

最佳答案

2个解决方案:

1/手动设计

码头:

*---------------QDockWidget---------------*
|                                         |
| *-------------QScrollArea-------------* |
| |                                     | |
| | *--------ExpandableWidget---------* | |
| | |                                 | | |
| | |                                 | | |
| | |                                 | | |
| | *---------------------------------* | |
| | *--------ExpandableWidget---------* | |
| | |                                 | | |
| | |                                 | | |
| | |                                 | | |
| | *---------------------------------* | |
| | *--------ExpandableWidget---------* | |
| | |                                 | | |
| | |                                 | | |
| | |                                 | | |
| | *---------------------------------* | |
| | *--------VerticalSpacer-----------* | |
| |                  |                  | |
| |                  |                  | |
| *-------------------------------------* |
|                                         |
*-----------------------------------------*

可扩展小部件:

ArrowL 是一个 QLabel,仅包含指示小部件是折叠还是展开的箭头。您将自定义小部件设置为所需的输入小部件,例如 int 输入。折叠时隐藏此小部件,展开时显示它。

*------------ExpandableWidget-------------*
|                                         |
| *-------------QVBoxLayout-------------* |
| |                                     | |
| | *-----------QHBoxLayout-----------* | |
| | | *-ArrowL-* *------QLabel------* | | |
| | *---------------------------------* | |
| |                                     | |
| | *---------Custom QWidget----------* | |
| | |                                 | | |
| | *---------------------------------* | |
| |                                     | |
| *-------------------------------------* |
|                                         |
*-----------------------------------------*

优点:您可以完全控制扩展坞的行为方式。 缺点:您必须在全局小部件中自己实现此层次结构,以确保其一致性。

2/QtPropertyBrower

QtPropertyBrowser是现已停产的 Qt 解决方案 (licence) 的一部分。它使您几乎可以在几行代码中完成您想要的事情。

关于c++ - Qt 自定义列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761774/

相关文章:

c++ - 有没有更清洁的方法来做到这一点? (在 Qt C++ 中准备 SQL 查询)

C++ 风格与性能?

c++ - XLib、XTestFakeKeyEvent 延迟

c++ - Qt:使用一个连接从多个线程写入数据库

c# - 在一个 DLL 中出现 EntryPointNotFoundException 而在另一个 DLL 中似乎正常

unity3d - 清理现有的Unity项目并将其迁移到新的一台或另一台PC中

python - 如何在python脚本中控制windows master音频

c++ - 为什么 QWidget::paintEvent 没有被调用?

c# - 找不到命名空间或数据类型 NavMeshAgent Unity 3d

c++ - 多屏幕/窗口 QT QML C++ 应用程序