以下是我想要显示的数据的逻辑层次结构。
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支持库可以提供让我的生活更轻松的视图?
收藏
item<A>[*]
和item<B>[*]
的子数据,那就太棒了。答案 0 :(得分:0)
不要尝试在一个视图中显示所有内容。如何为单独的集合使用单独的树视图(或tableviews)?或者树视图一次只显示一个集合,并且您有一些其他窗口小部件(组合框,列表视图,...),用于选择要查看的集合。
您应该考虑用户如何使用这些信息,用户是否真的需要查看所有现有信息,或者更小(更容易呈现)的子集就足够了。
我确定可以为该数据结构制作某种自定义视图窗口小部件。但是复杂的非标准小部件的问题是用户。用户不知道如何使用自定义小部件,大多数用户不喜欢这样。当然,用户将学习如何使用自定义小部件,如果他们使用足够长的时间。但是,如果您的程序仅偶尔使用,那么学习可能需要很长时间。这就是为什么使用标准小部件通常是更好的选择,即使自定义小部件在有经验的用户手中会更有效率。