dev: 调整整体布局

This commit is contained in:
Julian Freeman
2024-07-19 01:12:36 -04:00
parent 4b147edaa3
commit 287f950d41
3 changed files with 95 additions and 11 deletions

45
src/cmbx_styles.py Normal file
View File

@@ -0,0 +1,45 @@
# coding: utf8
import sys
from PySide6 import __version__ as pyside6_version
from PySide6.QtCore import QAbstractListModel, QModelIndex, Qt, QObject
from PySide6.QtWidgets import QComboBox, QApplication, QWidget
class _StyleListModel(QAbstractListModel):
def __init__(self, parent: QObject = None):
super().__init__(parent)
if sys.platform == "win32":
self.styles = ["windowsvista", "Fusion", "Windows"]
ver = list(map(lambda s: int(s), pyside6_version.split(".")))
if ver >= [6, 7, 0]:
self.styles.insert(0, "windows11")
elif sys.platform == "darwin":
self.styles = ["macOS", "Fusion", "Windows"]
elif sys.platform == "linux":
self.styles = ["Fusion", "Windows"]
else:
self.styles = []
def rowCount(self, parent: QModelIndex = ...):
return len(self.styles)
def data(self, index: QModelIndex, role: int = ...):
row = index.row()
if role == Qt.ItemDataRole.DisplayRole:
return self.styles[row]
class StyleComboBox(QComboBox):
def __init__(self, parent: QWidget = None):
super().__init__(parent)
self.setModel(_StyleListModel(self))
self.currentIndexChanged.connect(self.on_self_current_index_changed)
def on_self_current_index_changed(self, index: int):
model = self.model()
idx = model.index(index, 0)
style = model.data(idx, Qt.ItemDataRole.DisplayRole)
QApplication.setStyle(style)