在QTreeView中捕获项目创建时刻以设置自定义小部件

时间:2014-07-09 10:56:22

标签: qt qabstractitemview

我有从QAbstractItemModel继承的自定义模型和从QAbstractItemView继承的自定义视图。模型是组织为树的数据包装。更改模型时,它会发出必要的信号以通知视图有关更改。视图具有默认项目委托。

现在我想为视图中的每个项目创建一个自定义小部件,并使用QAbstractItemView :: setIndexWidget()进行设置。如何捕获并处理视图中的每个项目创建?

1 个答案:

答案 0 :(得分:0)

最好使用itemdelegate

class MyItemDelegate: public QAbstractItemDelegate
{
Q_OBJECT

  QWidget *widget;

public:
  MyItemDelegate(QObject *p):QAbstractItemDelegate(p)
  {
    //create widget
  }


  void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const
  {
      //initialize painting widget
      widget->render(painter);
  }

}