summaryrefslogtreecommitdiffstats
path: root/src/qgraphicstreeview.h
diff options
context:
space:
mode:
authorMarius Bugge Monsen <mmonsen@trolltech.com>2009-04-17 17:23:51 +0200
committerMarius Bugge Monsen <mmonsen@trolltech.com>2009-04-17 17:23:51 +0200
commit303a0e83e35d41f5302368e49c23f2076dbd21cc (patch)
treeecb8f904b28922545dfdfc4d8c4d2100a32bdc57 /src/qgraphicstreeview.h
parent3e8af54b2a1d6b842b6a4eff7872ca4e9eb661c2 (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.h36
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())