我正在学习Qt的模型/视图范例,因为它似乎非常适合编辑我必须处理的数据结构,例如:
Addition
|_QuadraticFunction
| |_intercept=0.2
| |_slope=0.0
| |_quadratic=1.2
|_Multiplication
|_LinearFunction
| |_intercept=0.0
| |_slope=-8.9
|_Gaussian
|_center=0.6
|_sigma=0.4
我的数据结构由一组功能组成,每个功能都有自己的属性。但是,我不想在单个TreeView中显示整个数据结构,因为它对于复杂的结构来说可能会花费太长时间。相反,我想显示一个视图,只包括函数名称,而其他视图只显示用户点击鼠标在上一个视图中选择的函数的属性,如下所示:
(FunctionsView,第一个视图)
Addition
|_QuadraticFunction
|_Multiplication
|_**LinearFunction**
|_Gaussian
(selectedFunctionView,第二个视图)
intercept 0.0
slope -8.9
在此示例中,用户在第一个视图中单击 LinearFunction ,第二个视图自动显示其属性。
我的问题是:我可以在一个模型下保存我的所有数据结构(函数名称和函数属性),然后有两个只显示模型部分的视图吗?如果没有,我是否必须为每个局部视图创建一个模型,每个模型索引数据结构的不同部分?请帮助,我对此缺乏经验。
.Jose
答案 0 :(得分:0)
是的,你绝对可以将它保存在一个具有两个不同视图的模型中。您可能想要查看QSortFilterProxyModel;你会为每个视图中的一个。代理应用排序和过滤 - 过滤就是您在此处所做的 - 更完整的模型。当您在主视图中选择某些内容时,您将要发出由其他代理模型(或其他视图传递并传递给其代理)的信号,然后根据新的重新过滤选定的项目。它实际上非常容易使用。最容易犯的错误是使用哪个模型索引感到困惑,因为您将拥有代理的模型索引,以及完整模型的模型索引,有时您必须在两者之间进行转换。文档非常明确地说明了必要的地方,但有助于进一步了解它。
请查看文档,如果您有更多问题,请询问。