CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkCollapsibleButton.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Library: CTK
4 
5  Copyright (c) Kitware Inc.
6 
7  Licensed under the Apache License, Version 2.0 (the "License");
8  you may not use this file except in compliance with the License.
9  You may obtain a copy of the License at
10 
11  http://www.apache.org/licenses/LICENSE-2.0.txt
12 
13  Unless required by applicable law or agreed to in writing, software
14  distributed under the License is distributed on an "AS IS" BASIS,
15  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  See the License for the specific language governing permissions and
17  limitations under the License.
18 
19 =========================================================================*/
20 
21 #ifndef __ctkCollapsibleButton_h
22 #define __ctkCollapsibleButton_h
23 
24 // Qt includes
25 #include <QAbstractButton>
26 #include <QFrame>
27 
28 // CTK includes
29 #include <ctkPimpl.h>
30 #include "ctkWidgetsExport.h"
31 
32 class ctkCollapsibleButtonPrivate;
33 class QStyleOptionButton;
34 
45 class CTK_WIDGETS_EXPORT ctkCollapsibleButton : public QAbstractButton
46 {
47  Q_OBJECT
48  Q_PROPERTY(bool collapsed READ collapsed WRITE setCollapsed NOTIFY contentsCollapsed)
52  Q_PROPERTY(int collapsedHeight READ collapsedHeight WRITE setCollapsedHeight)
53 
54 
58  Q_PROPERTY(bool flat READ isFlat WRITE setFlat)
59 
60  Q_PROPERTY(QFrame::Shape contentsFrameShape READ contentsFrameShape WRITE setContentsFrameShape)
61  Q_PROPERTY(QFrame::Shadow contentsFrameShadow READ contentsFrameShadow WRITE setContentsFrameShadow)
62  Q_PROPERTY(int contentsLineWidth READ contentsLineWidth WRITE setContentsLineWidth)
63  Q_PROPERTY(int contentsMidLineWidth READ contentsMidLineWidth WRITE setContentsMidLineWidth)
64 
65  Q_PROPERTY(Qt::Alignment buttonTextAlignment READ buttonTextAlignment WRITE setButtonTextAlignment)
66  Q_PROPERTY(Qt::Alignment indicatorAlignment READ indicatorAlignment WRITE setIndicatorAlignment)
67 
68 public:
69  ctkCollapsibleButton(QWidget *parent = 0);
70  ctkCollapsibleButton(const QString& text, QWidget *parent = 0);
72 
77  void setCollapsed(bool);
78  bool collapsed()const;
79 
82  void setCollapsedHeight(int heightInPixels);
83  int collapsedHeight()const;
84 
87  void setFlat(bool flat);
88 
91  bool isFlat()const;
92 
96  QFrame::Shape contentsFrameShape() const;
97  void setContentsFrameShape(QFrame::Shape);
98 
102  QFrame::Shadow contentsFrameShadow() const;
103  void setContentsFrameShadow(QFrame::Shadow);
104 
107  int contentsLineWidth() const;
109 
112  int contentsMidLineWidth() const;
114 
118  void setButtonTextAlignment(Qt::Alignment textAlignment);
119  Qt::Alignment buttonTextAlignment()const;
120 
124  void setIndicatorAlignment(Qt::Alignment indicatorAlignment);
125  Qt::Alignment indicatorAlignment()const;
126 
129  virtual QSize minimumSizeHint()const;
130 
133  virtual QSize sizeHint()const;
134 
137  virtual bool event(QEvent* event);
138 
141  virtual bool eventFilter(QObject* child, QEvent* e);
142 
146  virtual void setVisible(bool);
147 Q_SIGNALS:
151  void contentsCollapsed(bool);
152 
153 protected Q_SLOTS:
156  virtual void collapse(bool c);
157  virtual void onToggled(bool clicked = false);
158 
159 protected:
160  virtual void paintEvent(QPaintEvent*);
161  //virtual void mousePressEvent(QMouseEvent* event);
162  //virtual void mouseReleaseEvent(QMouseEvent* event);
163  virtual void childEvent(QChildEvent* c);
164 
165  virtual bool hitButton(const QPoint & pos) const;
167  virtual QSize buttonSizeHint() const;
168 
172  virtual void initStyleOption(QStyleOptionButton* option)const;
173 
174 protected:
175  QScopedPointer<ctkCollapsibleButtonPrivate> d_ptr;
176 
177 private:
178  Q_DECLARE_PRIVATE(ctkCollapsibleButton);
179  Q_DISABLE_COPY(ctkCollapsibleButton);
180 };
181 
182 #endif
virtual bool eventFilter(QObject *child, QEvent *e)
virtual ~ctkCollapsibleButton()
void setContentsMidLineWidth(int)
QScopedPointer< ctkCollapsibleButtonPrivate > d_ptr
void setFlat(bool flat)
virtual void onToggled(bool clicked=false)
int contentsMidLineWidth() const
void setContentsFrameShadow(QFrame::Shadow)
QFrame::Shadow contentsFrameShadow() const
ctkCollapsibleButton(QWidget *parent=0)
virtual void collapse(bool c)
void setContentsFrameShape(QFrame::Shape)
int collapsedHeight() const
void setButtonTextAlignment(Qt::Alignment textAlignment)
void setCollapsed(bool)
virtual void initStyleOption(QStyleOptionButton *option) const
void setCollapsedHeight(int heightInPixels)
void contentsCollapsed(bool)
virtual void paintEvent(QPaintEvent *)
void setContentsLineWidth(int)
virtual void setVisible(bool)
bool collapsed() const
bool isFlat() const
ctkCollapsibleButton(const QString &text, QWidget *parent=0)
virtual QSize minimumSizeHint() const
virtual void childEvent(QChildEvent *c)
void setIndicatorAlignment(Qt::Alignment indicatorAlignment)
virtual bool event(QEvent *event)
QFrame::Shape contentsFrameShape() const
virtual QSize buttonSizeHint() const
Compute the size hint of the head button only. The sizehint depends on the text.
int contentsLineWidth() const
Qt::Alignment indicatorAlignment() const
Qt::Alignment buttonTextAlignment() const
virtual bool hitButton(const QPoint &pos) const
virtual QSize sizeHint() const