source: trunk/src/gui/widgets/qsplitter.h@ 500

Last change on this file since 500 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 5.9 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information ([email protected])
5**
6** This file is part of the QtGui module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial Usage
10** Licensees holding valid Qt Commercial licenses may use this file in
11** accordance with the Qt Commercial License Agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Nokia.
14**
15** GNU Lesser General Public License Usage
16** Alternatively, this file may be used under the terms of the GNU Lesser
17** General Public License version 2.1 as published by the Free Software
18** Foundation and appearing in the file LICENSE.LGPL included in the
19** packaging of this file. Please review the following information to
20** ensure the GNU Lesser General Public License version 2.1 requirements
21** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22**
23** In addition, as a special exception, Nokia gives you certain
24** additional rights. These rights are described in the Nokia Qt LGPL
25** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26** package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you are unsure which license is appropriate for your use, please
37** contact the sales department at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QSPLITTER_H
43#define QSPLITTER_H
44
45#include <QtGui/qframe.h>
46#include <QtGui/qsizepolicy.h>
47
48QT_BEGIN_HEADER
49
50QT_BEGIN_NAMESPACE
51
52QT_MODULE(Gui)
53
54#ifndef QT_NO_SPLITTER
55
56class QSplitterPrivate;
57class QTextStream;
58template <typename T> class QList;
59
60class QSplitterHandle;
61
62class Q_GUI_EXPORT QSplitter : public QFrame
63{
64 Q_OBJECT
65
66 Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)
67 Q_PROPERTY(bool opaqueResize READ opaqueResize WRITE setOpaqueResize)
68 Q_PROPERTY(int handleWidth READ handleWidth WRITE setHandleWidth)
69 Q_PROPERTY(bool childrenCollapsible READ childrenCollapsible WRITE setChildrenCollapsible)
70
71public:
72 explicit QSplitter(QWidget* parent = 0);
73 explicit QSplitter(Qt::Orientation, QWidget* parent = 0);
74 ~QSplitter();
75
76 void addWidget(QWidget *widget);
77 void insertWidget(int index, QWidget *widget);
78
79 void setOrientation(Qt::Orientation);
80 Qt::Orientation orientation() const;
81
82 void setChildrenCollapsible(bool);
83 bool childrenCollapsible() const;
84
85 void setCollapsible(int index, bool);
86 bool isCollapsible(int index) const;
87 void setOpaqueResize(bool opaque = true);
88 bool opaqueResize() const;
89 void refresh();
90
91 QSize sizeHint() const;
92 QSize minimumSizeHint() const;
93
94 QList<int> sizes() const;
95 void setSizes(const QList<int> &list);
96
97 QByteArray saveState() const;
98 bool restoreState(const QByteArray &state);
99
100 int handleWidth() const;
101 void setHandleWidth(int);
102
103 int indexOf(QWidget *w) const;
104 QWidget *widget(int index) const;
105 int count() const;
106
107 void getRange(int index, int *, int *) const;
108 QSplitterHandle *handle(int index) const;
109
110 void setStretchFactor(int index, int stretch);
111
112Q_SIGNALS:
113 void splitterMoved(int pos, int index);
114
115protected:
116 virtual QSplitterHandle *createHandle();
117
118 void childEvent(QChildEvent *);
119
120 bool event(QEvent *);
121 void resizeEvent(QResizeEvent *);
122
123 void changeEvent(QEvent *);
124 void moveSplitter(int pos, int index);
125 void setRubberBand(int position);
126 int closestLegalPosition(int, int);
127
128#ifdef QT3_SUPPORT
129public:
130 QT3_SUPPORT_CONSTRUCTOR QSplitter(QWidget* parent, const char* name);
131 QT3_SUPPORT_CONSTRUCTOR QSplitter(Qt::Orientation, QWidget* parent, const char* name);
132 enum ResizeMode { Stretch, KeepSize, FollowSizeHint, Auto };
133 QT3_SUPPORT void setResizeMode(QWidget *w, ResizeMode mode);
134 inline QT3_SUPPORT void moveToFirst(QWidget *w) { insertWidget(0,w); }
135 inline QT3_SUPPORT void moveToLast(QWidget *w) { addWidget(w); }
136 inline QT3_SUPPORT void setCollapsible(QWidget *w, bool collapse)
137 { setCollapsible(indexOf(w), collapse); }
138 QT3_SUPPORT void setMargin(int margin) { setContentsMargins(margin, margin, margin, margin); }
139 QT3_SUPPORT int margin() const
140 { int margin; int dummy; getContentsMargins(&margin, &dummy, &dummy, &dummy); return margin; }
141#endif
142
143private:
144 Q_DISABLE_COPY(QSplitter)
145 Q_DECLARE_PRIVATE(QSplitter)
146private:
147 friend class QSplitterHandle;
148};
149
150//#ifdef QT3_SUPPORT
151#ifndef QT_NO_TEXTSTREAM
152Q_GUI_EXPORT QTextStream& operator<<(QTextStream&, const QSplitter&);
153Q_GUI_EXPORT QTextStream& operator>>(QTextStream&, QSplitter&);
154#endif
155//#endif
156
157class QSplitterHandlePrivate;
158class Q_GUI_EXPORT QSplitterHandle : public QWidget
159{
160 Q_OBJECT
161public:
162 QSplitterHandle(Qt::Orientation o, QSplitter *parent);
163 void setOrientation(Qt::Orientation o);
164 Qt::Orientation orientation() const;
165 bool opaqueResize() const;
166 QSplitter *splitter() const;
167
168 QSize sizeHint() const;
169
170protected:
171 void paintEvent(QPaintEvent *);
172 void mouseMoveEvent(QMouseEvent *);
173 void mousePressEvent(QMouseEvent *);
174 void mouseReleaseEvent(QMouseEvent *);
175 bool event(QEvent *);
176
177 void moveSplitter(int p);
178 int closestLegalPosition(int p);
179
180private:
181 Q_DISABLE_COPY(QSplitterHandle)
182 Q_DECLARE_PRIVATE(QSplitterHandle)
183};
184
185#endif // QT_NO_SPLITTER
186
187QT_END_NAMESPACE
188
189QT_END_HEADER
190
191#endif // QSPLITTER_H
Note: See TracBrowser for help on using the repository browser.