36 QSpinBox *editor =
new QSpinBox ( parent );
37 editor->setFrame (
false );
41 static_cast<long long> ( std::numeric_limits<T>::min() ),
42 static_cast<long long> ( std::numeric_limits<int>::min() ) ) ) );
46 static_cast<unsigned long long> ( std::numeric_limits<T>::max() ),
47 static_cast<unsigned long long> ( std::numeric_limits<int>::max() ) ) ) );
66 template<
class T>
void SetSpinboxModelData ( QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index )
68 QSpinBox *spinBox =
static_cast<QSpinBox*
> ( editor );
69 spinBox->interpretText();
70 model->setData ( index, QVariant::fromValue (
static_cast<T
> ( spinBox->value() ) ), Qt::EditRole );
74 const QStyleOptionViewItem &option,
75 const QModelIndex &index )
const
77 QVariant value = index.model()->data ( index, Qt::EditRole );
78 int user_type{value.userType() };
85 case QMetaType::LongLong:
89 case QMetaType::ULong:
91 case QMetaType::ULongLong:
93 case QMetaType::Float:
95 auto float_spinbox =
new QDoubleSpinBox ( parent );
96 float_spinbox->setMinimum (
97 std::numeric_limits<float>::min() );
98 float_spinbox->setMaximum (
99 std::numeric_limits<float>::max() );
100 return float_spinbox;
103 return QStyledItemDelegate::createEditor ( parent, option, index );
107 const QModelIndex &index )
const
109 QVariant value = index.model()->data ( index, Qt::EditRole );
110 int user_type{value.userType() };
116 case QMetaType::Long:
119 case QMetaType::LongLong:
122 case QMetaType::UInt:
125 case QMetaType::ULong:
128 case QMetaType::ULongLong:
131 case QMetaType::Float:
133 QDoubleSpinBox* spinBox =
static_cast<QDoubleSpinBox*
> ( editor );
134 spinBox->setValue ( value.value<
float>() );
138 if ( user_type == qWorldEditorApp->GetPathMetaType() )
140 QLineEdit* line_edit{
static_cast<QLineEdit*
> ( editor ) };
141 line_edit->setText ( QString::fromStdString ( value.value<std::filesystem::path>().string() ) );
145 QStyledItemDelegate::setEditorData ( editor, index );
149 const QModelIndex &index )
const
151 QVariant value = index.model()->data ( index, Qt::EditRole );
152 int user_type{value.userType() };
158 case QMetaType::Long:
161 case QMetaType::LongLong:
164 case QMetaType::UInt:
167 case QMetaType::ULong:
170 case QMetaType::ULongLong:
173 case QMetaType::Float:
175 QDoubleSpinBox* spinBox =
static_cast<QDoubleSpinBox*
> ( editor );
176 spinBox->interpretText();
177 model->setData ( index, QVariant::fromValue (
static_cast<float> ( spinBox->value() ) ), Qt::EditRole );
181 if ( user_type == qWorldEditorApp->GetPathMetaType() )
183 QLineEdit* line_edit{
static_cast<QLineEdit*
> ( editor ) };
184 model->setData ( index, line_edit->text(), Qt::EditRole );
188 QStyledItemDelegate::setModelData ( editor, model, index );
192 const QStyleOptionViewItem &option,
const QModelIndex &index )
const
194 QVariant value = index.model()->data ( index, Qt::EditRole );
195 int user_type{value.userType() };
198 case QMetaType::ULongLong:
200 editor->setGeometry ( option.rect );
204 QStyledItemDelegate::updateEditorGeometry ( editor, option, index );