QWidget* SpinBoxDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const { Q_UNUSED(option); Q_UNUSED(index); QSpinBox* spinbox = Util::SpinBox::create(min, max, unit, step); spinbox->setParent(parent); // Commit each change immediately when returning to event loop QSignalMapper* signal_mapper = new QSignalMapper(spinbox); signal_mapper->setMapping(spinbox, spinbox); connect(spinbox, SIGNAL(valueChanged(int)), signal_mapper, SLOT(map()), Qt::QueuedConnection); connect(signal_mapper, SIGNAL(mapped(QWidget*)), this, SIGNAL(commitData(QWidget*))); return spinbox; }