- Удален кастомный безрамочный режим (FramelessWindowHint) главного окна и диалогов. - Внедрено нативное управление окнами операционной системы (изменение размеров, максимизация, минимизация). - Добавлено применение QPalette под выбранную тему (темную/свелую) и акцент для покраски системных элементов окон. - Внутреннее содержимое диалогов (StyledDialog) обернуто в QScrollArea с автоскроллом и ограничением по высоте до 720px во избежание выхода окон за пределы экрана. - TitleBar упрощен до простой верхней панели вкладок (sub-header/tabs). - В диалог теста подсветки добавлен выбор номера ленты (1..4) при тесте пикселя виртуальной матрицы, обновлена логика генерации и отправки тестовой команды. - Раздел "Бродяга морей" переименован в "Бродяги морей".
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from PySide6.QtCore import Qt
|
|
from PySide6.QtWidgets import (
|
|
QHBoxLayout,
|
|
QWidget,
|
|
)
|
|
|
|
|
|
class TitleBar(QWidget):
|
|
"""Верхняя панель вкладок, отображаемая под системным заголовком главного окна."""
|
|
|
|
def __init__(self, window: QWidget) -> None:
|
|
super().__init__(window)
|
|
self._window = window
|
|
|
|
self.setObjectName("TitleBar")
|
|
self.setAttribute(Qt.WidgetAttribute.WA_StyledBackground, True)
|
|
self.setAutoFillBackground(True)
|
|
self.setFixedHeight(38)
|
|
|
|
layout = QHBoxLayout(self)
|
|
layout.setContentsMargins(10, 4, 10, 4)
|
|
layout.setSpacing(8)
|
|
self._layout = layout
|
|
|
|
self.tabs_container = QWidget(self)
|
|
self.tabs_container.setObjectName("TitleTabsContainer")
|
|
self.tabs_layout = QHBoxLayout(self.tabs_container)
|
|
self.tabs_layout.setContentsMargins(0, 0, 0, 0)
|
|
self.tabs_layout.setSpacing(0)
|
|
layout.addWidget(self.tabs_container, 1)
|
|
|
|
def set_tabs_widget(self, widget: QWidget) -> None:
|
|
"""Встроить виджет вкладок в панель."""
|
|
while self.tabs_layout.count():
|
|
item = self.tabs_layout.takeAt(0)
|
|
if item is not None:
|
|
old_widget = item.widget()
|
|
if old_widget is not None:
|
|
old_widget.setParent(None)
|
|
self.tabs_layout.addWidget(widget)
|