#ifndef DICT_TABLE_DELEGATE_H #define DICT_TABLE_DELEGATE_H #include #include "RecordEditor.h" class DictTableDelegate: public QStyledItemDelegate { Q_OBJECT public: DictTableDelegate(QObject* parent): QStyledItemDelegate(parent), editor(NULL) {} QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const; void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const; bool eventFilter(QObject *object, QEvent *event); void setEditorData(QWidget* editor, const QModelIndex& index) const; void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const; void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; int getCursorPos() const; void setCursorPos(int pos); void insertImageIntoEditor(int cursorPos, const QString& filePath); QWidget* getEditor() const { return editor; } private: QString getDisplayText(const QModelIndex& index) const; QRect getMarginRect(const QStyleOptionViewItem& option) const; bool indexIsLastCell(const QModelIndex& index, QAbstractItemModel* model) const; signals: void editorCreated() const; void editorDestroyed() const; private: mutable RecordEditor* editor; }; #endif