Skip to content
Snippets Groups Projects
Commit fb743f80 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

+ class CollapsibleGroupBox, yet unused

parent eafa9834
No related branches found
No related tags found
1 merge request!2065+ class CollapsibleGroupBox; use it where possible
......@@ -44,6 +44,56 @@ HeinzGroupBox::HeinzGroupBox(const QString& title, QWidget* parent)
setLayout(layout);
}
// ************************************************************************************************
// class CollapsibleGroupBox
// ************************************************************************************************
CollapsibleGroupBox::CollapsibleGroupBox(const QString& title, QWidget* parent, bool& expanded)
: QWidget(parent)
{
auto* m_toggleButton = new QToolButton(this);
m_toggleButton->setObjectName("GroupBoxToggler");
m_toggleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
m_toggleButton->setCheckable(true);
m_toggleButton->setText(title);
m_toggleButton->setArrowType(Qt::ArrowType::DownArrow);
m_toggleButton->setChecked(true);
m_toggleButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding);
auto* m_titleLayout = new QHBoxLayout;
m_titleLayout->setContentsMargins(0, 0, 3, 0);
m_titleLayout->setSpacing(3);
m_titleLayout->setAlignment(Qt::AlignVCenter);
m_titleLayout->addWidget(m_toggleButton);
auto* m_titleWidget = new QWidget(this);
m_titleWidget->setObjectName("GroupBoxTitleWidget");
m_titleWidget->setAttribute(Qt::WA_StyledBackground, true);
m_titleWidget->setLayout(m_titleLayout);
m_body = new QWidget(this);
m_body->setObjectName("ContentArea"); // stylesheet -> transparent background
m_body->setVisible(expanded);
auto* layout = new QVBoxLayout;
layout->setSpacing(0);
layout->setContentsMargins(0, 0, 0, 0);
layout->setMenuBar(m_titleWidget);
layout->addWidget(m_body);
setLayout(layout);
connect(
m_toggleButton, &QAbstractButton::clicked,
[this, &expanded](bool checked) {
this->m_toggleButton->setArrowType(checked ? Qt::ArrowType::DownArrow
: Qt::ArrowType::RightArrow);
this->m_body->setVisible(checked);
expanded = checked;
});
}
// ************************************************************************************************
// class GroupBoxCollapser
// ************************************************************************************************
......
......@@ -22,7 +22,7 @@ class QAction;
class QHBoxLayout;
class QToolButton;
//! A QGroupBox with given title and layout, and some standard styling.
//! A group box with given title and layout, and some standard styling.
class HeinzGroupBox : public QWidget {
public:
......@@ -33,6 +33,20 @@ private:
QWidget* m_body;
};
//! A group box that can be expanded or collapsed, according to external boolean flag 'expanded'.
class CollapsibleGroupBox : public QWidget {
public:
CollapsibleGroupBox(const QString& title, QWidget* parent, bool& expanded);
QWidget* body() { return m_body; }
private:
QWidget* m_titleWidget; //!< widget used to present the new groupbox title
QHBoxLayout* m_titleLayout; //!< layout in the title widget
QToolButton* m_toggleButton; //!< button to toggle between collapsed/expanded
QWidget* m_body;
};
//! Add-on to group boxes to make them collapsible.
//!
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment