1 /**********************************************************************
2 ** $Id: qt/qgroupbox.h   3.3.8   edited Jan 11 14:38 $
3 **
4 ** Definition of QGroupBox widget class
5 **
6 ** Created : 950203
7 **
8 ** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
9 **
10 ** This file is part of the widgets module of the Qt GUI Toolkit.
11 **
12 ** This file may be distributed under the terms of the Q Public License
13 ** as defined by Trolltech ASA of Norway and appearing in the file
14 ** LICENSE.QPL included in the packaging of this file.
15 **
16 ** This file may be distributed and/or modified under the terms of the
17 ** GNU General Public License version 2 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.GPL included in the
19 ** packaging of this file.
20 **
21 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22 ** licenses may use this file in accordance with the Qt Commercial License
23 ** Agreement provided with the Software.
24 **
25 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27 **
28 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29 **   information about Qt Commercial License Agreements.
30 ** See http://www.trolltech.com/qpl/ for QPL licensing information.
31 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
32 **
33 ** Contact info@trolltech.com if any conditions of this licensing are
34 ** not clear to you.
35 **
36 **********************************************************************/
37 
38 #ifndef QGROUPBOX_H
39 #define QGROUPBOX_H
40 
41 #ifndef QT_H
42 #include "qframe.h"
43 #endif // QT_H
44 
45 #ifndef QT_NO_GROUPBOX
46 
47 
48 class QAccel;
49 class QGroupBoxPrivate;
50 class QVBoxLayout;
51 class QGridLayout;
52 class QSpacerItem;
53 
54 class Q_EXPORT QGroupBox : public QFrame
55 {
56     Q_OBJECT
57     Q_PROPERTY( QString title READ title WRITE setTitle )
58     Q_PROPERTY( Alignment alignment READ alignment WRITE setAlignment )
59     Q_PROPERTY( Orientation orientation READ orientation WRITE setOrientation DESIGNABLE false )
60     Q_PROPERTY( int columns READ columns WRITE setColumns DESIGNABLE false )
61     Q_PROPERTY( bool flat READ isFlat WRITE setFlat )
62 #ifndef QT_NO_CHECKBOX
63     Q_PROPERTY( bool checkable READ isCheckable WRITE setCheckable )
64     Q_PROPERTY( bool checked READ isChecked WRITE setChecked )
65 #endif
66 public:
67     QGroupBox( QWidget* parent=0, const char* name=0 );
68     QGroupBox( const QString &title,
69 	       QWidget* parent=0, const char* name=0 );
70     QGroupBox( int strips, Orientation o,
71 	       QWidget* parent=0, const char* name=0 );
72     QGroupBox( int strips, Orientation o, const QString &title,
73 	       QWidget* parent=0, const char* name=0 );
74     ~QGroupBox();
75 
76     virtual void setColumnLayout(int strips, Orientation o);
77 
title()78     QString title() const { return str; }
79     virtual void setTitle( const QString &);
80 
alignment()81     int alignment() const { return align; }
82     virtual void setAlignment( int );
83 
84     int columns() const;
85     void setColumns( int );
86 
orientation()87     Orientation orientation() const { return dir; }
88     void setOrientation( Orientation );
89 
90     int insideMargin() const;
91     int insideSpacing() const;
92     void setInsideMargin( int m );
93     void setInsideSpacing( int s );
94 
95     void addSpace( int );
96     QSize sizeHint() const;
97 
98     bool isFlat() const;
99     void setFlat( bool b );
100     bool isCheckable() const;
101 #ifndef QT_NO_CHECKBOX
102     void setCheckable( bool b );
103 #endif
104     bool isChecked() const;
105     void setEnabled(bool on);
106 
107 #ifndef QT_NO_CHECKBOX
108 public slots:
109     void setChecked( bool b );
110 
111 signals:
112     void toggled( bool );
113 #endif
114 protected:
115     bool event( QEvent * );
116     void childEvent( QChildEvent * );
117     void resizeEvent( QResizeEvent * );
118     void paintEvent( QPaintEvent * );
119     void focusInEvent( QFocusEvent * );
120     void fontChange( const QFont & );
121 
122 private slots:
123     void fixFocus();
124     void setChildrenEnabled( bool b );
125 
126 private:
127     void skip();
128     void init();
129     void calculateFrame();
130     void insertWid( QWidget* );
131     void setTextSpacer();
132 #ifndef QT_NO_CHECKBOX
133     void updateCheckBoxGeometry();
134 #endif
135     QString str;
136     int align;
137     int lenvisible;
138 #ifndef QT_NO_ACCEL
139     QAccel * accel;
140 #endif
141     QGroupBoxPrivate * d;
142 
143     QVBoxLayout *vbox;
144     QGridLayout *grid;
145     int row;
146     int col : 30;
147     uint bFlat : 1;
148     int nRows, nCols;
149     Orientation dir;
150     int spac, marg;
151 
152 private:	// Disabled copy constructor and operator=
153 #if defined(Q_DISABLE_COPY)
154     QGroupBox( const QGroupBox & );
155     QGroupBox &operator=( const QGroupBox & );
156 #endif
157 };
158 
159 
160 #endif // QT_NO_GROUPBOX
161 
162 #endif // QGROUPBOX_H
163