QtFlapBox.hh
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 #ifndef ACG_QT_FLAPBOX_HH
00052 #define ACG_QT_FLAPBOX_HH
00053
00054
00055
00056 #include <iostream>
00057
00058 #include <QPushButton>
00059 #include <QBoxLayout>
00060 #include <QResizeEvent>
00061 #include <QFrame>
00062 #include <QScrollArea>
00063 #include "../Config/ACGDefines.hh"
00064
00065
00066
00067 namespace ACG {
00068 namespace QtWidgets {
00069
00070
00071
00072 class ACGDLLEXPORT QtFlapBox : public QScrollArea
00073 {
00074 Q_OBJECT
00075
00076 public:
00077
00078 QtFlapBox( QWidget * _parent = 0, Qt::WindowFlags _f = 0 );
00079 ~QtFlapBox ();
00080
00081 int addItem( QWidget * _widget, const QIcon & _icon, const QString & _text );
00082 int addItem( QWidget * _widget, const QString & _text );
00083
00084 int count () const;
00085
00086 int indexOf( QWidget * _widget ) const;
00087 int insertItem( int _index, QWidget * _widget,
00088 const QIcon & _icon, const QString & _text );
00089 int insertItem( int _index, QWidget * _widget, const QString & _text );
00090
00091 bool isItemEnabled( int _index ) const;
00092 QIcon itemIcon( int _index ) const;
00093
00094 QString itemText( int _index ) const;
00095 QString itemToolTip( int _index ) const;
00096 void removeItem( int _index );
00097 void setItemEnabled( int _index, bool _enabled );
00098 void setItemIcon( int _index, const QIcon & _icon );
00099 void setItemText( int _index, const QString & _text );
00100 void setItemToolTip( int _index, const QString & _toolTip );
00101 QWidget * widget( int _index ) const;
00102
00103
00104
00105 bool isItemHidden( int _index ) const;
00106 void setItemHidden( int _index, bool _hidden );
00107
00108 virtual QSize sizeHint() const;
00109
00110
00111 virtual void resizeEvent ( QResizeEvent * _event );
00112
00113 signals:
00114
00115 void sizeHintChanged();
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132 private:
00133
00134
00135 struct Flap
00136 {
00137 QPushButton * button;
00138 QWidget * widget;
00139
00140 void setText( const QString & _text )
00141 {
00142 button->setText( _text );
00143 }
00144
00145 void setIcon( const QIcon & _icon )
00146 {
00147 button->setIcon( _icon );
00148 }
00149
00150 void setToolTip( const QString & _tip )
00151 {
00152 button->setToolTip( _tip );
00153 }
00154
00155 QString text() const
00156 {
00157 return button->text();
00158 }
00159
00160 QIcon icon() const
00161 {
00162 return button->icon();
00163 }
00164
00165 QString toolTip() const
00166 {
00167 return button->toolTip();
00168 }
00169
00170 bool operator==( const Flap & _other ) const
00171 {
00172 return widget == _other.widget;
00173 }
00174 };
00175
00176
00177
00178 private slots:
00179
00180 void buttonClicked();
00181 void widgetDestroyed(QObject*);
00182
00183 private:
00184
00185 typedef QList< Flap > FlapList;
00186
00187 Flap * flap( QWidget * _widget ) const;
00188 const Flap * flap( int _index ) const;
00189 Flap * flap( int _index );
00190
00191 void updateFlaps();
00192 void relayout();
00193
00194 FlapList flapList;
00195 QVBoxLayout * boxlayout;
00196 QWidget * container;
00197
00198 };
00199
00200
00201 }
00202 }
00203
00204 #endif // ACG_QT_FLAPBOX_HH defined
00205