qt委托QSyleItemDelegate

继承QStyleItemDelegate类或者QItemDelegate类,基类都是QAbstractItemDelegate。

-------------------------本文用QStyleItemDelegate类---------------------

继承QStyleItemDelegate类并重写4个函数:(重写描述的是父子类关系,重载描述的一个类的不同函数)

1.  createEditor (QWidget  *parent, QStyleOptionViewItem  *option ,  QModeIndex  *index) const;    函数创建需要用到的委托控件类型并返回这个对象,比如下拉框.

三个参数    1).  QWidget  *parent  : 作为新创建的控件的父类

                                2).  3)参数此函数不涉及。

2.  setEditData ( QWidget *editor,  QModeIndex  *index) const ;

1)根据index获取model进而获取此index下的数据; index.model()->data(index, Qt::EditRole);

        2)将QWidget *editor 强制转化成creatEditor()函数创建的控件类型并为该控件赋值。

3.  setModeData( QWidget *editor ,QAbstractItemModel  *model,  QModelIndex * index) const;

1)与setEditData 相反,将editor强制转化成creatEditor()中的控件类型。

2)model.setData(index, “数据赋值”,Qt::WditRole).

4.  updateEditorGeometry(QWidget  *editor, QStyleOptionViewItem  *option,QModeIndex              & index ) const ;

updateEditorGeometry就是将editor设置到一定位置,并且有一定大小,使这个editor看起来像是正好嵌入到格子里面一样。用的是option.rect。

        editor->setGometry ( option . rect );

你可能感兴趣的:(qt委托QSyleItemDelegate)