37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from app.qt_compat import QHBoxLayout, QLabel, Qt, QVBoxLayout, QWidget
|
|
|
|
|
|
class SectionPanel(QWidget):
|
|
def __init__(self, title: str, parent: QWidget | None = None) -> None:
|
|
super().__init__(parent)
|
|
self.setObjectName("sectionPanel")
|
|
|
|
layout = QVBoxLayout(self)
|
|
layout.setContentsMargins(0, 0, 0, 0)
|
|
layout.setSpacing(0)
|
|
|
|
self.header_widget = QWidget(self)
|
|
self.header_widget.setObjectName("sectionHeader")
|
|
self.header_widget.setFixedHeight(40)
|
|
header_layout = QHBoxLayout(self.header_widget)
|
|
header_layout.setContentsMargins(12, 0, 12, 0)
|
|
header_layout.setSpacing(0)
|
|
|
|
self.title_label = QLabel(self.header_widget)
|
|
self.title_label.setObjectName("sectionHeaderLabel")
|
|
self.title_label.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
|
|
header_layout.addWidget(self.title_label, 1)
|
|
|
|
self.body = QWidget(self)
|
|
self.body.setObjectName("sectionBody")
|
|
|
|
layout.addWidget(self.header_widget)
|
|
layout.addWidget(self.body)
|
|
|
|
self.setTitle(title)
|
|
|
|
def setTitle(self, title: str) -> None:
|
|
self.title_label.setText(title)
|