23 #include <QApplication> 25 #include <QColorDialog> 27 #include <QDoubleSpinBox> 29 #include <QMessageBox> 32 #include <QPushButton> 33 #include <QStringList> 41 const QStyleOptionViewItem &option,
42 const QModelIndex &index)
const 44 QVariant data = index.data(Qt::DisplayRole);
46 QString name = data.value<QString>();
48 QStyledItemDelegate::paint(painter, option, index);
52 const QStyleOptionViewItem &option,
53 const QModelIndex &index)
const 55 QVariant data = index.data(Qt::EditRole);
56 QVariant displayData = index.data(Qt::DisplayRole);
57 QString name = index.model()->data(index.model()->index(index.row(), index.column() - 1)).value<QString>();
61 QWidget *editorWidget =
nullptr;
65 QSpinBox *spinBox =
new QSpinBox(parent);
66 spinBox->setSingleStep(1);
69 editorWidget = spinBox;
73 else if (static_cast<QMetaType::Type>(data.type()) == QMetaType::Float)
75 QDoubleSpinBox *spinBox =
new QDoubleSpinBox(parent);
76 spinBox->setDecimals(5);
77 spinBox->setSingleStep(0.1);
81 editorWidget = spinBox;
85 QStringList entries = data.value<QStringList>();
86 QComboBox *comboBox =
new QComboBox(parent);
87 comboBox->setEditable(
false);
88 comboBox->addItems(entries);
90 editorWidget = comboBox;
94 editorWidget = QStyledItemDelegate::createEditor(parent, option, index);
100 editorWidget->installEventFilter(const_cast<QmitkMapPropertyDelegate *>(
this));
106 return new QLabel(displayData.toString(), parent);
111 QVariant data = index.data(Qt::EditRole);
112 QVariant displayData = index.data(Qt::DisplayRole);
114 std::cout <<
"Set EDITOR DATA : " << data.toDouble() << std::endl;
120 QSpinBox *spinBox = qobject_cast<QSpinBox *>(editor);
121 spinBox->setValue(data.toInt());
125 else if (static_cast<QMetaType::Type>(data.type()) == QMetaType::Float)
127 QDoubleSpinBox *spinBox = qobject_cast<QDoubleSpinBox *>(editor);
128 spinBox->setValue(data.toDouble());
130 std::cout <<
"Set EDITOR DATA : " << spinBox->value() << std::endl;
135 QComboBox *comboBox = qobject_cast<QComboBox *>(editor);
136 QString displayString = displayData.value<QString>();
137 comboBox->setCurrentIndex(comboBox->findData(displayString));
141 return QStyledItemDelegate::setEditorData(editor, index);
147 QVariant data = index.data(Qt::EditRole);
148 QVariant displayData = index.data(Qt::DisplayRole);
154 QWidget *colorBtn = qobject_cast<QWidget *>(editor);
155 QVariant colorVariant;
156 colorVariant.setValue<QColor>(colorBtn->palette().color(QPalette::Button));
157 model->setData(index, colorVariant);
162 QSpinBox *spinBox = qobject_cast<QSpinBox *>(editor);
165 QVariant intValueVariant;
166 intValueVariant.setValue<
float>(
static_cast<float>(
intValue));
167 model->setData(index, intValueVariant);
170 else if (static_cast<QMetaType::Type>(data.type()) == QMetaType::Float)
172 QDoubleSpinBox *spinBox = qobject_cast<QDoubleSpinBox *>(editor);
173 double doubleValue = spinBox->value();
175 std::cout <<
"SET MODEL DATA << FLOAT : " << doubleValue << std::endl;
177 QVariant doubleValueVariant;
178 doubleValueVariant.setValue<
float>(
static_cast<float>(doubleValue));
179 std::cout <<
"SET MODEL DATA << Variant : " << doubleValue << std::endl;
180 model->setData(index, doubleValueVariant);
185 QString displayData = data.value<QString>();
187 QComboBox *comboBox = qobject_cast<QComboBox *>(editor);
188 QString comboBoxValue = comboBox->currentText();
190 QVariant comboBoxValueVariant;
191 comboBoxValueVariant.setValue<QString>(comboBoxValue);
192 model->setData(index, comboBoxValueVariant);
196 QStyledItemDelegate::setModelData(editor, model, index);
200 void QmitkMapPropertyDelegate::commitAndCloseEditor()
202 QWidget *editor =
nullptr;
203 if (QPushButton *pushBtn = qobject_cast<QPushButton *>(sender()))
210 emit commitData(editor);
211 emit closeEditor(editor);
216 const QStyleOptionViewItem &option,
217 const QModelIndex & )
const 219 editor->setGeometry(option.rect);
222 void QmitkMapPropertyDelegate::ComboBoxCurrentIndexChanged(
int )
224 if (QComboBox *comboBox = qobject_cast<QComboBox *>(sender()))
226 emit commitData(comboBox);
227 emit closeEditor(comboBox);
231 void QmitkMapPropertyDelegate::SpinBoxValueChanged(
const QString & )
233 QAbstractSpinBox *spinBox =
nullptr;
234 if ((spinBox = qobject_cast<QSpinBox *>(sender())) || (spinBox = qobject_cast<QDoubleSpinBox *>(sender())))
236 emit commitData(spinBox);
237 emit closeEditor(spinBox);
241 void QmitkMapPropertyDelegate::showColorDialog()
251 case QEvent::KeyRelease:
252 case QEvent::MouseButtonRelease:
253 case QEvent::MouseButtonDblClick:
255 case QEvent::FocusIn:
257 if (QWidget *editor = dynamic_cast<QWidget *>(o))
259 emit commitData(editor);
bool eventFilter(QObject *o, QEvent *e)
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
std::vector< std::string > StringList
itk::RGBPixel< float > Color
Color Standard RGB color typedef (float)
QmitkMapPropertyDelegate(QObject *parent=0)
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
Fit an editor to some geometry (overwritten from QItemDelegate)
void setEditorData(QWidget *editor, const QModelIndex &index) const