70 lines
2.5 KiB
C++
70 lines
2.5 KiB
C++
#include "spinboxdelegate.h"
|
|
|
|
#include <QSpinBox>
|
|
|
|
#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<QSpinBox*>(editor);
|
|
spinbox->setValue(value);
|
|
} else {
|
|
// Put the value into the SpinBox
|
|
qreal value = index.model()->data(index, Qt::EditRole).toReal();
|
|
QDoubleSpinBox* spinbox = static_cast<QDoubleSpinBox*>(editor);
|
|
spinbox->setValue(value);
|
|
}
|
|
|
|
// QStyledItemDelegate::setEditorData(editor, index);
|
|
}
|
|
|
|
void SpinboxDelegate::setModelData(QWidget* editor,
|
|
QAbstractItemModel* model,
|
|
const QModelIndex& index) const {
|
|
QStyledItemDelegate::setModelData(editor, model, index);
|
|
}
|