QT-多层树中的自定义委托

QT-多层树中的自定义委托,qt,Qt,我有一个多层次的QTreeView(目前有3个级别,更多取决于), 我为每个级别创建了3个不同的代理 但是如何将委托正确地应用于QTreeView? 下面的图片显示了我想要的: >Row 0 -------------------- delegate A >Row 1 -------------------- delegate A ^Row 2 -------------------- delegate A ^Row 20 ----------------- delegate

我有一个多层次的QTreeView(目前有3个级别,更多取决于), 我为每个级别创建了3个不同的代理 但是如何将委托正确地应用于QTreeView? 下面的图片显示了我想要的:

>Row 0 -------------------- delegate A
>Row 1 -------------------- delegate A

^Row 2 -------------------- delegate A
  ^Row 20 ----------------- delegate B
     Row 200 -------------- delegate C
     Row 201 -------------- delegate C
     Row 202 -------------- delegate C

  ^Row 21 ----------------- delegate B
     Row 210 -------------- delegate C
     Row 211 -------------- delegate C
     Row 212 -------------- delegate C

This function:
    QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate * delegate);

With this function, I can only assign the delegate for the first level of the TreeView.
And its children (level 2, level 3) are gonna share the same delegate with level 1
如何将代理B分配到第20行和第21行?
我如何将代表C分配给第200行、第201行、第202行……

我认为不可能以您试图实现的方式完成。相反,我建议您为所有项分配一个公共委托,并在处理程序中根据行/列索引选择不同的路径。不过可能有点乱。

1。这是一个动态的树,所以它可能会非常混乱。2.如何访问子行?对于第2行,我可以这样写:如果(Index.row()==2),但是对于第20行、第200行和第201行,它们共享相同的行索引….@BT9527,如何访问树元素将取决于您使用的模型。下面是一个关于如何构建良好树模型的好例子: