25 #include <QApplication> 28 #include <QPushButton> 29 #include <QColorDialog> 31 #include <QDoubleSpinBox> 32 #include <QStringList> 33 #include <QMessageBox> 41 ,
const QModelIndex &index)
const 44 QVariant data = index.data(Qt::DisplayRole);
46 QString name = data.value<QString>();
48 QStyledItemDelegate::paint(painter, option, index);
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>();
62 QWidget* editorWidget =
nullptr;
66 QSpinBox* spinBox =
new QSpinBox(parent);
67 spinBox->setSingleStep(1);
70 editorWidget = spinBox;
74 else if (static_cast<QMetaType::Type>(data.type()) == QMetaType::Float)
76 QDoubleSpinBox* spinBox =
new QDoubleSpinBox(parent);
77 spinBox->setDecimals(5);
78 spinBox->setSingleStep(0.1);
82 editorWidget = spinBox;
86 QStringList entries = data.value<QStringList>();
87 QComboBox* comboBox =
new QComboBox(parent);
88 comboBox->setEditable(
false);
89 comboBox->addItems(entries);
91 editorWidget = comboBox;
95 editorWidget = QStyledItemDelegate::createEditor(parent, option, index);
101 editorWidget->installEventFilter(const_cast<QmitkMapPropertyDelegate*>(
this));
108 return new QLabel(displayData.toString(), parent);
115 QVariant data = index.data(Qt::EditRole);
116 QVariant displayData = index.data(Qt::DisplayRole);
118 std::cout <<
"Set EDITOR DATA : " << data.toDouble() << std::endl;
126 QSpinBox* spinBox = qobject_cast<QSpinBox *>(editor);
127 spinBox->setValue(data.toInt());
131 else if (static_cast<QMetaType::Type>(data.type()) == QMetaType::Float)
133 QDoubleSpinBox* spinBox = qobject_cast<QDoubleSpinBox *>(editor);
134 spinBox->setValue(data.toDouble());
136 std::cout <<
"Set EDITOR DATA : " << spinBox->value() << std::endl;
141 QComboBox* comboBox = qobject_cast<QComboBox *>(editor);
142 QString displayString = displayData.value<QString>();
143 comboBox->setCurrentIndex(comboBox->findData(displayString));
147 return QStyledItemDelegate::setEditorData(editor, index);
152 ,
const QModelIndex &index)
const 154 QVariant data = index.data(Qt::EditRole);
155 QVariant displayData = index.data(Qt::DisplayRole);
162 QWidget *colorBtn = qobject_cast<QWidget *>(editor);
163 QVariant colorVariant;
164 colorVariant.setValue<QColor>(colorBtn->palette().color(QPalette::Button));
165 model->setData(index, colorVariant);
170 QSpinBox* spinBox = qobject_cast<QSpinBox *>(editor);
173 QVariant intValueVariant;
174 intValueVariant.setValue<
float>(
static_cast<float>(
intValue));
175 model->setData(index, intValueVariant);
178 else if (static_cast<QMetaType::Type>(data.type()) == QMetaType::Float)
180 QDoubleSpinBox* spinBox = qobject_cast<QDoubleSpinBox *>(editor);
181 double doubleValue = spinBox->value();
183 std::cout <<
"SET MODEL DATA << FLOAT : " << doubleValue << std::endl;
185 QVariant doubleValueVariant;
186 doubleValueVariant.setValue<
float>(
static_cast<float>(doubleValue));
187 std::cout <<
"SET MODEL DATA << Variant : " << doubleValue << std::endl;
188 model->setData(index, doubleValueVariant);
193 QString displayData = data.value<QString>();
195 QComboBox* comboBox = qobject_cast<QComboBox *>(editor);
196 QString comboBoxValue = comboBox->currentText();
198 QVariant comboBoxValueVariant;
199 comboBoxValueVariant.setValue<QString>(comboBoxValue);
200 model->setData(index, comboBoxValueVariant);
204 QStyledItemDelegate::setModelData(editor, model, index);
209 void QmitkMapPropertyDelegate::commitAndCloseEditor()
212 if (QPushButton *pushBtn = qobject_cast<QPushButton *>(sender()))
219 emit commitData(editor);
220 emit closeEditor(editor);
226 const QStyleOptionViewItem &option,
227 const QModelIndex & )
const 229 editor->setGeometry(option.rect);
232 void QmitkMapPropertyDelegate::ComboBoxCurrentIndexChanged(
int )
234 if (QComboBox *comboBox = qobject_cast<QComboBox *>(sender()))
236 emit commitData(comboBox);
237 emit closeEditor(comboBox);
241 void QmitkMapPropertyDelegate::SpinBoxValueChanged(
const QString& )
243 QAbstractSpinBox *spinBox = 0;
244 if ((spinBox = qobject_cast<QSpinBox *>(sender()))
245 || (spinBox = qobject_cast<QDoubleSpinBox *>(sender())))
247 emit commitData(spinBox);
248 emit closeEditor(spinBox);
252 void QmitkMapPropertyDelegate::showColorDialog()
263 case QEvent::KeyRelease:
264 case QEvent::MouseButtonRelease:
265 case QEvent::MouseButtonDblClick:
267 case QEvent::FocusIn:
269 if (QWidget* editor = dynamic_cast<QWidget*>(o))
271 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