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

时间:2016-01-05 03:03:15

标签: qt

我有一个多层次的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 个答案:

答案 0 :(得分:0)

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