class TableDelegateInt : public QItemDelegate{ Q_OBJECTpublic: TableDelegateInt(int value=0,int min=-2147483647,int max=2147483647,int step=1,QObject* parent=0); QWidget* createEditor(QWidget* parent,const QStyleOptionViewItem& option,const QModelIndex& index) const; void setEditorData(QWidget* wgt,const QModelIndex& index) const; void setModelData(QWidget* wgt,QAbstractItemModel* model,const QModelIndex& index) const; void updateEditorGeometry(QWidget* wgt,const QStyleOptionViewItem& option,const QModelIndex& index) const;public slots: int SetMin(int value); int SetMax(int value);private: QSpinBox* dsbi; int dsbiMin; int dsbiMax; int dsbiStep; int dsbiValue;}; TableDelegateInt::TableDelegateInt(int value,int min,int max,int step, QObject* parent):QItemDelegate(parent) { // QSpinBox* lsbi=new QSpinBox(parent); dsbiValue =value; dsbiMin =min; dsbiMax =max; dsbiStep =step; } QWidget *TableDelegateInt::createEditor(QWidget* parent,const QStyleOptionViewItem& option,const QModelIndex& index)const { QSpinBox* lsbi=new QSpinBox(parent); lsbi->setMinimum(dsbiMin); lsbi->setMaximum(dsbiMax); lsbi->setSingleStep(dsbiStep); lsbi->setValue(dsbiValue); return lsbi; } void TableDelegateInt::setEditorData(QWidget* wgt,const QModelIndex& index)const { int value=index.model()->data(index,Qt::EditRole).toInt(); QSpinBox* lsbi=static_cast<QSpinBox*>(wgt); lsbi->setValue(value); } void TableDelegateInt::setModelData(QWidget* wgt,QAbstractItemModel* model,const QModelIndex& index)const { QSpinBox* lsbi=static_cast<QSpinBox*>(wgt); lsbi->interpretText(); int value=lsbi->value(); model->setData(index,value,Qt::EditRole); } void TableDelegateInt::updateEditorGeometry(QWidget* wgt,const QStyleOptionViewItem& option,const QModelIndex& index)const { wgt->setGeometry(option.rect); }int TableDelegateInt::SetMin(int value){dsbiMin=value;return dsbiMin;}int TableDelegateInt::SetMax(int value){dsbiMax=value;return dsbiMax;}
void QTableWidget::openPersistentEditor ( QTableWidgetItem * item )