PyQt Common Scientific软件模式:树和设置框

时间:2014-02-26 02:23:24

标签: python qt pyqt

我没有以正确的方式考虑这个问题,也许资源已经存在,但我似乎无法找到正确的术语来了解它的实现。

许多软件包具有任意复杂的数据对象,其关系以“树”形式显示,当您单击任何项​​目时,另一个窗口小部件显示各种设置和编辑窗口小部件,然后通常还有可视化窗格。 / p>

我试着在这里做一个样本:

Before After

问题在于,每当我尝试实现这一点时,我的事情就变得一团糟。我想,对于每一个属性,也许我会setData并在那里插入一个模型,然后回想起它并在点击一个项目时将其设置到设置视图,但这只适用于QVariants,当我放置一个应用程序段错误中的C ++对象。

为每种类型的物品制作单独的设置盒的想法似乎单调乏味且不优雅。我真正想要的是,每当我点击树中的项目时,项目都会以某种方式包含简单数据类型(str,int,float,path)的字典,其行为类似于用户通过项目设置与之交互的模型“表格视图”,每个项目类型都有适当的代表。

这种模式的名称是什么?我在哪里可以学习如何使用Qt实现它?

2 个答案:

答案 0 :(得分:1)

我所寻找的似乎是QDataWidgetMapper!本教程的最后一部分很好地介绍了它。该教程非常适合学习如何精确地生成这种应用程序。

http://www.yasinuludag.com/blog/?p=98

答案 1 :(得分:0)

我不完全清楚问题是什么,但我会抓住机会:我看到树和属性面板是同一模型的两个不同视图。该模型是元素的层次结构,叶节点(甚至非叶节点)具有可以编辑的某些属性。树视图是层次结构的视图,它只是通过显示它来允许浏览层次结构,允许扩展和扩展。折叠分支,过滤器等。属性视图是一个节点的视图,即当前在树中选择的节点。

因此树视图表示模型的层次结构部分,当用户选择节点时,会发出信号通知选择了哪个节点。另一个视图连接到此信号,并获取所选节点的属性并显示它们。如果属性包含足够的元数据,则属性视图可以动态创建每个属性的正确控件:范围属性,其中min-max表示为具有两个箭头的文本字段,一个属性作为组合框等。您可能会创建一个包含两列的表:左列是所选节点的属性名称,右列包含用于与每个属性进行交互的小部件。对于每种属性类型,您将拥有不同类型的窗口小部件,您的表创建者将在此基础上实例化正确类型的窗口小部件。

我不明白为什么你需要不止一个型号。

对于树,QTreeView。对于属性,QTableView。或者,QtPropertyBrowser可能会做到这一点,但似乎没有在pyqt中可用,也许这可以找到类似的东西。