Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkInitialValuesTypeDelegate.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 #include <QPainter>
16 #include <QApplication>
17 #include <QLabel>
18 #include <QComboBox>
19 
21 {
22 }
23 
25  const QStyleOptionViewItem&
26  , const QModelIndex& index) const
27 {
28  QVariant displayData = index.data(Qt::DisplayRole);
29  QVariant data = index.data(Qt::EditRole);
30 
31  if (data.isValid())
32  {
33  QComboBox* cmbBox = new QComboBox(parent);
34  cmbBox->addItem(QString("scalar"));
35  cmbBox->addItem(QString("image"));
36  cmbBox->setCurrentIndex(0);
37 
38  cmbBox->installEventFilter(const_cast<QmitkInitialValuesTypeDelegate*>(this));
39 
40  return cmbBox;
41  }
42  else
43  {
44  return new QLabel(displayData.toString(), parent);
45  }
46 
47 }
48 
49 void QmitkInitialValuesTypeDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const
50 {
51  QVariant data = index.data(Qt::EditRole);
52 
53  if (data.isValid())
54  {
55 
56  QComboBox* cmbBox = qobject_cast<QComboBox*>(editor);
57 
58  if (cmbBox)
59  {
60  cmbBox->setCurrentIndex(data.toInt());
61  }
62  else
63  {
64  QStyledItemDelegate::setEditorData(editor, index);
65  }
66  }
67 }
68 
69 void QmitkInitialValuesTypeDelegate::setModelData(QWidget* editor, QAbstractItemModel* model
70  , const QModelIndex& index) const
71 {
72  QVariant data = index.data(Qt::EditRole);
73 
74  if (data.isValid())
75  {
76  QComboBox* cmbBox = qobject_cast<QComboBox*>(editor);
77  int selection = cmbBox->currentIndex();
78 
79  QVariant selectionVariant(selection);
80  model->setData(index, selectionVariant);
81  }
82  else
83  {
84  QStyledItemDelegate::setModelData(editor, model, index);
85  }
86 }
QmitkInitialValuesTypeDelegate(QObject *parent=nullptr)
void setEditorData(QWidget *editor, const QModelIndex &index) const override
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override