// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QABSTRACTITEMDELEGATE_H #define QABSTRACTITEMDELEGATE_H #include #include #include QT_REQUIRE_CONFIG(itemviews); QT_BEGIN_NAMESPACE class QPainter; class QModelIndex; class QAbstractItemModel; class QAbstractItemView; class QHelpEvent; class QAbstractItemDelegatePrivate; class Q_WIDGETS_EXPORT QAbstractItemDelegate : public QObject { Q_OBJECT public: enum EndEditHint { NoHint, EditNextItem, EditPreviousItem, SubmitModelCache, RevertModelCache }; explicit QAbstractItemDelegate(QObject *parent = nullptr); virtual ~QAbstractItemDelegate(); // painting virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const = 0; virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const = 0; // editing virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; virtual void destroyEditor(QWidget *editor, const QModelIndex &index) const; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const; // for non-widget editors virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index); virtual bool helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index); virtual QList paintingRoles() const; Q_SIGNALS: void commitData(QWidget *editor); void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint = NoHint); void sizeHintChanged(const QModelIndex &); protected: QAbstractItemDelegate(QObjectPrivate &, QObject *parent = nullptr); private: Q_DECLARE_PRIVATE(QAbstractItemDelegate) Q_DISABLE_COPY(QAbstractItemDelegate) Q_PRIVATE_SLOT(d_func(), void _q_commitDataAndCloseEditor(QWidget*)) }; QT_END_NAMESPACE #endif // QABSTRACTITEMDELEGATE_H