Drake Designer
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros Pages
ddGroupBoxHider.h
Go to the documentation of this file.
1 #ifndef __ddGroupBoxHider_h
2 #define __ddGroupBoxHider_h
3 
4 #include <QObject>
5 #include <QGroupBox>
6 #include <QLayout>
7 #include <QLayoutItem>
8 #include "ddAppConfigure.h"
9 
10 
11 class DD_APP_EXPORT ddGroupBoxHider : public QObject
12 {
13  Q_OBJECT
14 
15 public:
16 
17  ddGroupBoxHider(QGroupBox* parent) : QObject(parent)
18  {
19  this->setParent(parent);
20  this->connect(parent, SIGNAL(toggled(bool)), SLOT(updateGroupBox()));
21  if (!parent->isCheckable())
22  {
23  parent->setCheckable(true);
24  }
25  this->updateGroupBox();
26  }
27 
29  {
30 
31  }
32 
33  QGroupBox* parentGroupBox()
34  {
35  return qobject_cast<QGroupBox*>(this->parent());
36  }
37 
38  static void setLayoutWidgetVisibility(QLayout* layout, bool visible)
39  {
40  if (!layout)
41  {
42  return;
43  }
44 
45  for (int i = 0; i < layout->count(); ++i)
46  {
47  QLayoutItem* item = layout->itemAt(i);
48  QWidget* layoutWidget = item->widget();
49  if (layoutWidget)
50  {
51  layoutWidget->setVisible(visible);
52  }
53  else
54  {
55  setLayoutWidgetVisibility(item->layout(), visible);
56  }
57  }
58  }
59 
60 public slots:
61 
63  {
64  QGroupBox* groupBox = this->parentGroupBox();
65  this->setLayoutWidgetVisibility(groupBox->layout(), groupBox->isChecked());
66  }
67 
68 private:
69  Q_DISABLE_COPY(ddGroupBoxHider);
70 };
71 
72 #endif
QGroupBox * parentGroupBox()
static void setLayoutWidgetVisibility(QLayout *layout, bool visible)
ddGroupBoxHider(QGroupBox *parent)
#define DD_APP_EXPORT