0

以下是我要显示的数据的逻辑层次结构。

root
|
+ node_name0 ---- collection<A> ---- collection<B>
|                 |                  |
|                 + item<A>[0]       + item<B>[0]
|                 |                  |
|                 + item<A>[1]       + item<B>[1]
|                 |
|                 + item<A>[2]
|
+ node_name1 ---- [...]
|
[...]

据我所知,Qt 的表格视图将无法显示这些数据,而不会严重损失保真度。它的列表视图也不会。如果我将层次结构重新调整为如下所示,Qt 的树视图可以显示数据:

root
|
+ node_name
| |
| + collection<A>
| | |
| | + item<A>[0]
| | |
| | [...]
| |
| [...]
|
[...]

但是,在我看来,这避开了 的项目collection<A>和 的项目collection<B>具有完全不同的语义这一事实。

我已经有一个实现,QAbstractItemModel它提供了 ASCII 艺术的第一位给出的数据排列。

如何显示这些数据?

有哪些 Qt 支持库可以提供让我的生活更轻松的视图?

愿望清单

  • 我不想将多个视图的层次结构与代理模型一起使用(但如果需要,我会咬紧牙关)。
  • 我不想支付任何费用(因为我只能硬着头皮使用多个视图和代理模型)。
  • 如果给出的任何解决方案都可以处理更深层次的层次结构,即显示 and 的子数据,那就太好item<A>[*]item<B>[*]
4

1 回答 1

0

不要试图在一个视图中显示所有内容。为单独的集合使用单独的树视图(或表格视图)怎么样?或者树视图一次只显示一个集合,而您有一些其他小部件(组合框、列表视图...)用于选择查看哪个集合。

您应该考虑用户如何使用信息,以及用户是否真的需要查看所有现有信息,或者可能一个更小(更容易呈现)的子集就足够了。

我确信可以为该数据结构制作某种自定义视图小部件。但是复杂的非标准小部件的问题在于用户。用户不知道如何使用自定义小部件,大多数用户不喜欢这样。当然,如果用户使用的时间足够长,他们将学习如何使用自定义小部件。但是,如果您的程序只是偶尔使用,那么学习可能需要很长时间。这就是为什么使用标准小部件通常是更好的选择,即使自定义小部件在有经验的用户手中会更有效率。

于 2013-07-09T08:42:08.050 回答