27 #include <QHBoxLayout>
28 #include <QPropertyAnimation>
29 #include <QToolButton>
30 #include <QVBoxLayout>
39 _layout =
new QVBoxLayout(
this);
40 _layout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
41 _layout->setContentsMargins(0, 0, 0, 0);
42 _layout->setSpacing(0);
49 connect(_button, &QToolButton::clicked, [
this](
bool checked) { setCollapsed(!checked); });
52 void CollapsableGroupBox::createTitle(
const QString& title)
54 QHBoxLayout* title_layout =
new QHBoxLayout;
55 title_layout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
56 title_layout->setContentsMargins(0, 0, 0, 0);
59 _button =
new QToolButton;
60 _button->setStyleSheet(
"QToolButton { border: none; }");
61 _button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
62 _button->setArrowType(Qt::ArrowType::RightArrow);
63 _button->setText(title);
64 _button->setCheckable(
true);
65 _button->setChecked(
false);
66 title_layout->addWidget(_button);
69 QFrame* hline =
new QFrame;
70 hline->setFrameShape(QFrame::HLine);
71 hline->setFrameShadow(QFrame::Sunken);
72 hline->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
73 title_layout->addWidget(hline);
75 _layout->addLayout(title_layout);
78 void CollapsableGroupBox::createContentArea()
80 _content =
new QGroupBox;
81 _content->setFlat(
true);
82 _content->setStyleSheet(
"QGroupBox { border: none; }");
87 _layout->addWidget(_content);
90 void CollapsableGroupBox::setCollapsed(
bool collapsed)
92 if (_button->isChecked() == collapsed)
94 _button->setChecked(!collapsed);
98 _collapsed = collapsed;
100 _button->setArrowType(_collapsed ? Qt::ArrowType::RightArrow : Qt::ArrowType::DownArrow);