CustomItemDelegate.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef CUSTOMITEMDELEGATE_H
  2. #define CUSTOMITEMDELEGATE_H
  3. #include <QStyledItemDelegate>
  4. #include <QScopedPointer>
  5. class CustomItemDelegatePrivate;
  6. class CustomItemDelegate : public QStyledItemDelegate
  7. {
  8. Q_OBJECT
  9. Q_DISABLE_COPY(CustomItemDelegate)
  10. public:
  11. explicit CustomItemDelegate(QObject *parent = NULL);
  12. ~CustomItemDelegate();
  13. protected:
  14. virtual void mousePressEvent(QMouseEvent* event,
  15. QAbstractItemModel *model,
  16. const QStyleOptionViewItem &option,
  17. const QModelIndex &index);
  18. virtual void mouseMoveEvent(QMouseEvent* event,
  19. QAbstractItemModel *model,
  20. const QStyleOptionViewItem &option,
  21. const QModelIndex &index);
  22. virtual void mouseReleaseEvent(QMouseEvent* event,
  23. QAbstractItemModel *model,
  24. const QStyleOptionViewItem &option,
  25. const QModelIndex &index);
  26. void paint(QPainter* painter,
  27. const QStyleOptionViewItem &option,
  28. const QModelIndex &index) const;
  29. bool editorEvent(QEvent* event,
  30. QAbstractItemModel *model,
  31. const QStyleOptionViewItem &option,
  32. const QModelIndex &index);
  33. QWidget* createEditor(QWidget* editor,
  34. const QStyleOptionViewItem &option,
  35. const QModelIndex &index) const;
  36. void updateEditorGeometry(QWidget* editor,
  37. const QStyleOptionViewItem &option,
  38. const QModelIndex &index) const;
  39. QSize sizeHint(const QStyleOptionViewItem &option,
  40. const QModelIndex &index) const;
  41. void setEditorData(QWidget* editor,
  42. const QModelIndex &index) const;
  43. void setModelData(QWidget* editor,
  44. QAbstractItemModel *model,
  45. const QModelIndex &index) const;
  46. protected slots:
  47. virtual void onCurrentIndexChange(const QModelIndex &index);
  48. virtual void onPressIndexChanged(const QModelIndex &index);
  49. private:
  50. friend class CustomItemDelegatePrivate;
  51. QScopedPointer<CustomItemDelegatePrivate> m_Private;
  52. };
  53. #endif // CUSTOMITEMDELEGATE_H