0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

WIP: Expansion Panel demo

This commit is contained in:
2025-02-10 12:28:38 +01:00
parent 384beba521
commit 5c3516cefa

View File

@ -78,26 +78,26 @@ class ExpansionPanel(BECWidget, QWidget):
self.header_frame.setStyleSheet(
"""
#headerFrame {
border: 1px solid #C0C0C0;
background-color: "#141414";
border-radius: 4px;
}
"""
)
header_layout = QHBoxLayout(self.header_frame)
header_layout.setContentsMargins(3, 2, 3, 2)
header_layout.setSpacing(5)
self._header_layout = QHBoxLayout(self.header_frame)
self._header_layout.setContentsMargins(3, 2, 3, 2)
self._header_layout.setSpacing(5)
self.btn_toggle = QPushButton("" if self._expanded else "", self.header_frame)
self.btn_toggle.setFixedSize(25, 25)
self.btn_toggle.setStyleSheet("border: none; font-weight: bold;")
self.btn_toggle.clicked.connect(self.toggle)
header_layout.addWidget(self.btn_toggle, alignment=Qt.AlignVCenter)
self._header_layout.addWidget(self.btn_toggle, alignment=Qt.AlignVCenter)
self.label_title = QLabel(title, self.header_frame)
self.label_title.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum)
header_layout.addWidget(self.label_title, alignment=Qt.AlignVCenter | Qt.AlignLeft)
header_layout.addStretch()
self._header_layout.addWidget(self.label_title, alignment=Qt.AlignVCenter | Qt.AlignLeft)
self._header_layout.addStretch()
self._main_layout.addWidget(self.header_frame)
@ -105,7 +105,13 @@ class ExpansionPanel(BECWidget, QWidget):
"""Create the collapsible content frame (with its own layout)."""
self.content_frame = QFrame(self)
self.content_frame.setObjectName("ContentFrame")
self.content_frame.setStyleSheet(
"""
#ContentFrame {
border-radius: 4px;
}
"""
)
self.content_frame.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum)
self._content_layout = QVBoxLayout(self.content_frame)
self._content_layout.setContentsMargins(5, 5, 5, 5)
@ -175,6 +181,11 @@ class ExpansionPanel(BECWidget, QWidget):
"""Layout of the content frame for programmatic additions."""
return self._content_layout
@property
def header_layout(self) -> QHBoxLayout:
"""Layout of the content frame for programmatic additions."""
return self._header_layout
def event(self, e):
"""
If Designer adds child widgets, re-parent them into _content_layout