如何使用委托QML在TreeView中添加QComboBox和TextField?

时间:2016-10-31 03:42:51

标签: qt delegates treeview qml qcombobox

我在本教程之后实现了TreeView,但我使用Qt Quick Control实现了(没有.ui文件)。 tutorial here。使用加载文本和TreeView上的显示,它工作正常。但我有另一个问题:

我知道一行是TreeItem,而模型是从QAbstractItemModel扩展的TreeModel。   - 我的TreeView有四列,我使用itemData为TreeItem设置数据,每个itemData有4个元素。

  • On Value Column(第2列)我想添加动态组件(QComboBox和TextField),它依赖于TreeItem TreeModel的值。 The figure below

  • 我从.cpp文件中为TreeItem和TreeModel设置数据,并在.qml文件中为TreeView设置模型。

    • 我有一个objectA,其中包含8个元素(名称,值,为第2列分配组件的数据,Combobox的当前索引,如果有Combobox,data1,...),第二个元素可能是QStringList或QString。我的TreeItem通过TreeItem(name,value,data1,data2)从objectA获取数据。

我有3个问题需要解决:

  • 第一个问题,我已将第2列委托给所有ComboBox或所有TextField确定,但我不能将它们混合在一起。当TreeItem的值是QStringList时,我想要Combobox的委托,当它是QString时,我想要TextField的委托。但是我无法访问返回数据,我不知道我需要在.cpp文件或.qml文件中定义它。我知道" styleData.value "是从.qml文件访问的单元格数据的值。但是我无法知道数据类型" styleData.value "
  • 第二个问题,我不知道如何在加载数据上设置Combobox的当前索引的另一个问题。例如:TreeItem的值(第二个元素)是:[item1,item2,item3],当前索引位于第2项。
  • 第三个问题,当加载数据时,我更改了ComboBox的数据。如何获取TreeItem的当前数据,当前的Combobox索引。

很抱歉很长的问题,还有很多问题。 如果你知道我的问题,请帮助我。 提前谢谢。

0 个答案:

没有答案