Go to the documentation of this file.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 #include "qxtgroupbox.h"
00026
00027 #include <QChildEvent>
00028
00029 class QxtGroupBoxPrivate : public QxtPrivate<QxtGroupBox>
00030 {
00031 public:
00032 QXT_DECLARE_PUBLIC(QxtGroupBox);
00033
00034 QxtGroupBoxPrivate();
00035 bool collapsive;
00036 bool flat;
00037 };
00038
00039 QxtGroupBoxPrivate::QxtGroupBoxPrivate() : collapsive(true), flat(false)
00040 {}
00041
00042
00058 QxtGroupBox::QxtGroupBox(QWidget* parent)
00059 : QGroupBox(parent)
00060 {
00061 QXT_INIT_PRIVATE(QxtGroupBox);
00062 setCheckable(true);
00063 setChecked(true);
00064 connect(this, SIGNAL(toggled(bool)), this, SLOT(setExpanded(bool)));
00065
00066 }
00067
00071 QxtGroupBox::QxtGroupBox(const QString& title, QWidget* parent)
00072 : QGroupBox(title, parent)
00073 {
00074 QXT_INIT_PRIVATE(QxtGroupBox);
00075 setCheckable(true);
00076 setChecked(true);
00077 connect(this, SIGNAL(toggled(bool)), this, SLOT(setExpanded(bool)));
00078 }
00079
00083 QxtGroupBox::~QxtGroupBox()
00084 {}
00085
00090 bool QxtGroupBox::isCollapsive() const
00091 {
00092 return qxt_d().collapsive;
00093 }
00094
00095 void QxtGroupBox::setCollapsive(bool enable)
00096 {
00097 if (qxt_d().collapsive != enable)
00098 {
00099 qxt_d().collapsive = enable;
00100 if (!enable)
00101 setExpanded(true);
00102 else if (!isChecked())
00103 setExpanded(false);
00104 }
00105 }
00106
00114 void QxtGroupBox::setCollapsed(bool collapsed)
00115 {
00116 setExpanded(!collapsed);
00117 }
00118
00126 void QxtGroupBox::setExpanded(bool expanded)
00127 {
00128 if (qxt_d().collapsive || expanded)
00129 {
00130
00131 foreach(QObject* child, children())
00132 {
00133 if (child->isWidgetType())
00134 static_cast<QWidget*>(child)->setVisible(expanded);
00135 }
00136 if (expanded) {
00137 setFlat(qxt_d().flat);
00138 } else {
00139 qxt_d().flat = isFlat();
00140 setFlat(true);
00141 }
00142 }
00143 }
00144
00148 void QxtGroupBox::childEvent(QChildEvent* event)
00149 {
00150 QObject* child = event->child();
00151 if (event->added() && child->isWidgetType())
00152 {
00153 QWidget* widget = static_cast<QWidget*>(child);
00154 if (qxt_d().collapsive && !isChecked())
00155 widget->hide();
00156 }
00157 }