class SvgItemDesDlgTableWidgetDelegate:public QItemDelegate
{
Q_OBJECT
public:
explicit SvgItemDesDlgTableWidgetDelegate(QObject* parent=nullptr)
:QItemDelegate(parent)
{}
~SvgItemDesDlgTableWidgetDelegate(){}
// QAbstractItemDelegate interface
public:
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if(index.isValid()&&(index.column()==0||index.column()==1))
{
QDoubleSpinBox* _spinBox=new QDoubleSpinBox(parent);
_spinBox->setSingleStep(1.00);
_spinBox->setMaximum(std::numeric_limits<double>::max());
_spinBox->setMinimum(std::numeric_limits<double>::min());
_spinBox->setValue(0.00);
return _spinBox;
}
else
{
QItemDelegate::createEditor(parent,option,index);
}
}
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
if(index.isValid()&&(index.column()==0||index.column()==1))
{
QDoubleSpinBox* _spinBox=static_cast<QDoubleSpinBox*>(editor);
model->setData(index,_spinBox->text());
}
else {
QLineEdit* _lineEdit=qobject_cast<QLineEdit*>(editor);
model->setData(index,_lineEdit->text());
}
}
};
//调用
tablewidget->setItemDelegate(new SvgItemDesDlgTableWidgetDelegate(this));