QT 中引入了经典的MVC结构,即模型/视图/控制分离的结构,不过QT中只有MV没有C,模型主要获取数据,视图主要复制模型的显示,而委托只要是设置显示的风格,在某一行某一列使用的不同的部件进行显示,我在QT的QSpinBox的历程上加上了一点。
通常委托都继承QStyledItemDelegate和QItemDelegate这个两个类。两个类的代码基本相同,如果需要使用style sheet 时,建议使用QStyledItemDelegat。
class SpinBoxDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
SpinBoxDelegate(QObject *parent = 0);
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const Q_DECL_OVERRIDE;
void setEditorData(QWidget *editor, const QModelIndex &index) const Q_DECL_OVERRIDE;
void setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex & index)const