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
32class ctkCollapsibleButtonPrivate;
33class QStyleOptionButton;
34
45class 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
68public:
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
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);
147Q_SIGNALS:
152
153protected Q_SLOTS:
156 virtual void collapse(bool c);
157 virtual void onToggled(bool clicked = false);
158
159protected:
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
174protected:
175 QScopedPointer<ctkCollapsibleButtonPrivate> d_ptr;
176
177private:
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