dev: 调整整体布局
This commit is contained in:
45
src/cmbx_styles.py
Normal file
45
src/cmbx_styles.py
Normal 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)
|
||||
Reference in New Issue
Block a user