diff options
author | Marius Bugge Monsen <mmonsen@trolltech.com> | 2009-04-17 17:23:51 +0200 |
---|---|---|
committer | Marius Bugge Monsen <mmonsen@trolltech.com> | 2009-04-17 17:23:51 +0200 |
commit | 303a0e83e35d41f5302368e49c23f2076dbd21cc (patch) | |
tree | ecb8f904b28922545dfdfc4d8c4d2100a32bdc57 /src/qgraphicstreeview.h | |
parent | 3e8af54b2a1d6b842b6a4eff7872ca4e9eb661c2 (diff) |
Move tree item size and painting functionality from the view to the item.
Diffstat (limited to 'src/qgraphicstreeview.h')
-rw-r--r-- | src/qgraphicstreeview.h | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/src/qgraphicstreeview.h b/src/qgraphicstreeview.h index 344025c..39190b8 100644 --- a/src/qgraphicstreeview.h +++ b/src/qgraphicstreeview.h @@ -59,7 +59,11 @@ public: QTreeModelIterator iterator() const; void setIterator(const QTreeModelIterator &it); + int level() const; + void setLevel(int level); + virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; + virtual QSizeF sizeHint(const QTreeModelIterator &it, const QStyleOptionViewItemV4 *option, Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual QSizeF sizeHint(const QTreeModelIterator &it, int column, const QStyleOptionViewItemV4 *option, Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); @@ -76,6 +80,20 @@ private: Q_DECLARE_PRIVATE(QtGraphicsTreeViewItem) }; +class QtGraphicsTreeViewItemCreatorBase +{ +public: + virtual ~QtGraphicsTreeViewItemCreatorBase() {} + virtual QtGraphicsTreeViewItem *create(const QTreeModelIterator &it, QtGraphicsTreeView *view) const = 0; +}; + +template <class T> +class QtGraphicsTreeViewItemCreator : public QtGraphicsTreeViewItemCreatorBase +{ +public: + inline QtGraphicsTreeViewItem *create(const QTreeModelIterator &it, QtGraphicsTreeView *view) const { return new T(it, view); } +}; + class Q_GUI_EXPORT QtGraphicsTreeView : public QGraphicsWidget { Q_OBJECT @@ -84,6 +102,7 @@ class Q_GUI_EXPORT QtGraphicsTreeView : public QGraphicsWidget Q_PROPERTY(qreal horizontalOffset READ horizontalOffset WRITE setHorizontalOffset) Q_PROPERTY(qreal verticalOffset READ verticalOffset WRITE setVerticalOffset) Q_PROPERTY(Qt::TextElideMode textElideMode READ textElideMode WRITE setTextElideMode) + public: QtGraphicsTreeView(QGraphicsWidget *parent = 0, Qt::WindowFlags wFlags = 0); virtual ~QtGraphicsTreeView(); @@ -114,14 +133,16 @@ public: void nextItem(QTreeModelIterator &it) const; void previousItem(QTreeModelIterator &it) const; - QRectF disclosureRect(const QRectF &rect) const; // ### FIXME + QRectF disclosureRect(const QRectF &rect) const; -public: + QtGraphicsTreeViewItemCreatorBase *viewItemCreator() const; + void setViewItemCreator(QtGraphicsTreeViewItemCreatorBase *creator); + + //const QList<QtGraphicsTreeViewItem*> &viewItems() const; + + virtual void updateLayout(); virtual QTreeModelIterator itemAt(const QPointF &position, QRectF *rect = 0) const; - virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *graphicsOption = 0, QWidget *widget = 0); - virtual QSizeF itemSize(const QStyleOptionViewItemV4 *option, const QTreeModelIterator &it, int column) const; - virtual void paintItem(QPainter *painter, const QStyleOptionViewItemV4 *option, const QTreeModelIterator &it, int column) const; - virtual void paintBranch(QPainter *painter, const QStyleOptionViewItemV4 *option, const QTreeModelIterator &it) const; + virtual void initStyleOption(QStyleOptionViewItemV4 *option, QWidget *widget = 0) const; virtual void initStyleOption(QStyleOptionViewItemV4 *option, const QTreeModelIterator &it, int column) const; virtual void initStyleOptionState(QStyleOptionViewItemV4 *option, const QTreeModelIterator &it, int column) const; @@ -131,7 +152,6 @@ public Q_SLOTS: void setFirstIndex(int index); // ### flat index - item based scrolling void setHorizontalOffset(qreal offset); void setVerticalOffset(qreal offset); -// void setVerticalOffset(int offset); // ### for testing void setItemExpanded(QTreeModelIterator &it, bool expanded = true); Q_SIGNALS: @@ -141,6 +161,7 @@ Q_SIGNALS: void itemClicked(QTreeModelIterator &it, Qt::MouseButton button); void itemExpanded(QTreeModelIterator &it, int count); void itemCollapsed(QTreeModelIterator &it, int count); + void layoutChanged(); protected: QtGraphicsTreeView(QtGraphicsTreeViewPrivate &, QGraphicsWidget *parent = 0, Qt::WindowFlags wFlags = 0); @@ -154,6 +175,7 @@ protected: private: friend class QtTreeController; + friend class QtGraphicsTreeViewItem; Q_DECLARE_PRIVATE(QtGraphicsTreeView) Q_DISABLE_COPY(QtGraphicsTreeView) Q_PRIVATE_SLOT(d_func(), void _q_controllerDestroyed()) |