#include "spinboxdelegate.h" #include #include "model/metadata.h" SpinboxDelegate::SpinboxDelegate(QObject* parent) : QStyledItemDelegate(parent) {} void SpinboxDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyledItemDelegate::paint(painter, option, index); } QSize SpinboxDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { return QStyledItemDelegate::sizeHint(option, index); } QWidget* SpinboxDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& /*option*/, const QModelIndex& index) const { const QAbstractItemModel* localModel = index.model(); QString headerText = localModel->headerData(index.column(), Qt::Horizontal).toString(); const UserRoles role = GET_ROLE_FOR_COLUMN(index.column()); const bool isInt = INT_ROLES.contains(role); if (isInt) { QSpinBox* editor = new QSpinBox(parent); editor->setMinimum(0); editor->setMaximum(23000); return editor; } else { QDoubleSpinBox* editor = new QDoubleSpinBox(parent); editor->setMinimum(0); editor->setMaximum(23000); return editor; } // return QStyledItemDelegate::createEditor(parent, option, index); } void SpinboxDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const { // Get the value via index of the Model const QAbstractItemModel* localModel = index.model(); QString headerText = localModel->headerData(index.column(), Qt::Horizontal).toString(); const UserRoles role = GET_ROLE_FOR_COLUMN(index.column()); const bool isInt = INT_ROLES.contains(role); if (isInt) { int value = index.model()->data(index, Qt::EditRole).toInt(); // Put the value into the SpinBox QSpinBox* spinbox = static_cast(editor); spinbox->setValue(value); } else { // Put the value into the SpinBox qreal value = index.model()->data(index, Qt::EditRole).toReal(); QDoubleSpinBox* spinbox = static_cast(editor); spinbox->setValue(value); } // QStyledItemDelegate::setEditorData(editor, index); } void SpinboxDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const { QStyledItemDelegate::setModelData(editor, model, index); }