17 const QObject* stateChangeReceiver,
18 const char* stateChangeSlot)
21 QGroupBox* widget =
new QGroupBox;
23 widget->setCheckable(
true);
24 widget->setChecked(
true);
28 widget->setStyleSheet(R
"(
29 QGroupBox::indicator:checked {
30 image: url(:/icons/TriangleBlackDown.svg);
32 QGroupBox::indicator:unchecked {
33 image: url(:/icons/TriangleBlackRight.svg);
38 QHBoxLayout* layout = new QHBoxLayout;
39 widget->setLayout(layout);
40 layout->setContentsMargins(0, 0, 0, 0);
42 QWidget* holder =
new QWidget;
43 layout->addWidget(holder);
45 QObject::connect(widget, SIGNAL(clicked(
bool)), holder, SLOT(setVisible(
bool)));
47 if (desc.children.size() > 0)
50 QVBoxLayout* layout =
new QVBoxLayout;
51 holder->setLayout(layout);
52 layout->setContentsMargins(9, 0, 0, 0);
53 for (
const auto& child : desc.children)
55 layout->addWidget(createChild(child));
59 widget->setChecked(!desc.collapsed);
60 holder->setVisible(!desc.collapsed);
71 const QObject* stateChangeReceiver,
72 const char* stateChangeSlot)
77 QVBoxLayout* layout =
new QVBoxLayout(widget);
78 widget->setLayout(layout);
79 layout->setContentsMargins(0, 0, 0, 0);
82 QWidget* childWidget = createChild(child);
83 layout->addWidget(childWidget);
95 const QObject* stateChangeReceiver,
96 const char* stateChangeSlot)
101 QHBoxLayout* layout =
new QHBoxLayout(widget);
102 widget->setLayout(layout);
103 layout->setContentsMargins(0, 0, 0, 0);
106 QWidget* childWidget = createChild(child);
107 layout->addWidget(childWidget);
115 TypedWidget<SimpleGridLayoutSpanningChild, QWidget>
120 const QObject* stateChangeReceiver,
121 const char* stateChangeSlot)
125 switch (desc.children.size())
130 return createChild(desc.children.front());
136 QHBoxLayout* layout =
new QHBoxLayout(widget);
137 widget->setLayout(layout);
138 layout->setContentsMargins(0, 0, 0, 0);
141 QWidget* childWidget = createChild(child);
142 layout->addWidget(childWidget);
154 const QObject* stateChangeReceiver,
155 const char* stateChangeSlot)
160 QGridLayout* layout =
new QGridLayout(widget);
161 widget->setLayout(layout);
162 layout->setContentsMargins(0, 0, 0, 0);
168 QWidget* childWidget = createChild(child);
170 if (
auto spc = SimpleGridLayoutSpanningChildPtr::dynamicCast(child); spc)
172 colspan =
std::max(1, spc->columns);
174 layout->addWidget(childWidget, row, col, 1, colspan);
176 if (col + colspan >= desc.columns)
197 const QObject* stateChangeReceiver,
198 const char* stateChangeSlot)
203 QGridLayout* layout =
new QGridLayout(widget);
204 widget->setLayout(layout);
205 layout->setContentsMargins(0, 0, 0, 0);
207 for (std::size_t i = 0; i < desc.children.size(); ++i)
211 QWidget* childWidget = createChild(child);
214 if (i < desc.childrenLayoutInfo.size())
216 l = desc.childrenLayoutInfo.at(i);
225 maxrow =
std::max(maxrow, l.row + l.spanRow);
226 layout->addWidget(childWidget, l.row, l.col, l.spanRow, l.spanCol);