diff options
Diffstat (limited to 'src/main-view/DictTableDelegate.h')
-rw-r--r-- | src/main-view/DictTableDelegate.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main-view/DictTableDelegate.h b/src/main-view/DictTableDelegate.h new file mode 100644 index 0000000..cf43fc5 --- /dev/null +++ b/src/main-view/DictTableDelegate.h @@ -0,0 +1,44 @@ +#ifndef DICT_TABLE_DELEGATE_H +#define DICT_TABLE_DELEGATE_H + +#include <QtWidgets> + +#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 + |