28 #include <QtWidgets/QAbstractItemView>
29 #include <QtCore/QSignalMapper>
36 m_finishedMapper =
new QSignalMapper(
this);
37 connect(m_finishedMapper, SIGNAL(mapped(QWidget*)),
this, SIGNAL(commitData(QWidget*)));
38 connect(m_finishedMapper, SIGNAL(mapped(QWidget*)),
this, SIGNAL(closeEditor(QWidget*)));
54 switch(p->
value().type())
58 case QMetaType::Float:
59 case QVariant::Double:
60 case QVariant::UserType:
64 if (editor->metaObject()->indexOfSignal(
"editFinished()") != -1)
66 connect(editor, SIGNAL(editFinished()), m_finishedMapper, SLOT(map()));
67 m_finishedMapper->setMapping(editor, editor);
72 editor = QItemDelegate::createEditor(parent, option, index);
76 if (editor->metaObject()->indexOfSignal(
"currentIndexChanged(int)") != -1)
78 connect(editor, SIGNAL(currentIndexChanged(
int)), m_finishedMapper, SLOT(map()));
79 m_finishedMapper->setMapping(editor, editor);
82 connect(editor, SIGNAL(destroyed(QObject*)),
83 this, SLOT(editorDestroyed(QObject*)));
90 m_finishedMapper->blockSignals(
true);
91 QVariant data = index.model()->data(index, Qt::EditRole);
96 case QMetaType::Double:
97 case QMetaType::Float:
98 case QVariant::UserType:
100 if (static_cast<Property*>(index.internalPointer())->
setEditorData(editor, data))
103 QItemDelegate::setEditorData(editor, index);
106 m_finishedMapper->blockSignals(
false);
111 QVariant data = index.model()->data(index, Qt::EditRole);
114 case QVariant::Color:
115 case QMetaType::Double:
116 case QMetaType::Float:
117 case QVariant::UserType:
120 QVariant data =
static_cast<Property*
>(index.internalPointer())->editorData(editor);
123 model->setData(index, data , Qt::EditRole);
128 QItemDelegate::setModelData(editor, model, index);
135 return QItemDelegate::updateEditorGeometry(editor, option, index);
138 void QVariantDelegate::parseEditorHints(QWidget* editor,
const QString& editorHints)
const
140 if (editor && !editorHints.isEmpty())
142 editor->blockSignals(
true);
144 QRegExp rx(
"(.*)(=\\s*)(.*)(;{1})");
147 while ((pos = rx.indexIn(editorHints, pos)) != -1)
150 editor->setProperty(qPrintable(rx.cap(1).trimmed()), rx.cap(3).trimmed());
151 pos += rx.matchedLength();
153 editor->blockSignals(
false);
157 void QVariantDelegate::editorDestroyed(QObject*)
virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
void finishPropertyEdit() const
virtual QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option)
QVariantDelegate(QObject *parent=0)
virtual ~QVariantDelegate()
Destructor.
virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
QItemDelegate implementation.
static EditorWindow * currentInstance
void beginPropertyEdit() const
virtual QVariant value(int role=Qt::UserRole) const
virtual void setEditorData(QWidget *editor, const QModelIndex &index) const
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const