// SPDX-FileCopyrightText: 2026 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include "CollapsibleSection.h" #include #include CollapsibleSection::CollapsibleSection(const QString &title, QWidget *parent) : QWidget(parent) { auto *v = new QVBoxLayout(this); v->setContentsMargins(0, 0, 0, 0); v->setSpacing(0); header_ = new QToolButton(this); header_->setText(title); header_->setCheckable(true); header_->setChecked(true); header_->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); header_->setArrowType(Qt::DownArrow); header_->setCursor(Qt::PointingHandCursor); header_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); header_->setStyleSheet( "QToolButton { color:#1F3A5F; font-weight:bold; text-align:left;" " padding:3px 6px 3px 6px; border:none;" " border-left:3px solid #FA7268; border-bottom:1px solid #FA7268; background:transparent; }"); content_ = new QWidget(this); v->addWidget(header_); v->addWidget(content_); connect(header_, &QToolButton::toggled, this, [this](bool on) { content_->setVisible(on); header_->setArrowType(on ? Qt::DownArrow : Qt::RightArrow); }); } void CollapsibleSection::setContentLayout(QLayout *layout) { content_->setLayout(layout); } void CollapsibleSection::setExpanded(bool on) { header_->setChecked(on); }