1
1
mirror of https://github.com/KenanZhu/AutoLibrary.git synced 2026-06-21 00:43:03 +08:00

refactor(gui): 提取窗口居中逻辑至 CenterOnParentMixin,消除5处重复 showEvent

This commit is contained in:
2026-06-19 10:20:35 +08:00
parent 5552af1345
commit 88a74a7a47
6 changed files with 68 additions and 128 deletions
+11 -32
View File
@@ -19,8 +19,7 @@ from PySide6.QtCore import (
Slot
)
from PySide6.QtGui import (
QCloseEvent,
QShowEvent
QCloseEvent
)
from PySide6.QtWidgets import (
QApplication,
@@ -38,6 +37,7 @@ from managers.theme.ThemeManager import(
instance as themeInstance
)
from gui.ALWidgetMixin import CenterOnParentMixin
from gui.resources.ui.Ui_ALSettingsWidget import Ui_ALSettingsWidget
from interfaces.ConfigProvider import (
CfgKey,
@@ -83,7 +83,7 @@ def _restartApp(
QProcess.startDetached(sys.executable, sys.argv)
class ALSettingsWidget(QWidget, Ui_ALSettingsWidget):
class ALSettingsWidget(CenterOnParentMixin, QWidget, Ui_ALSettingsWidget):
settingsWidgetIsClosed = Signal()
@@ -102,6 +102,14 @@ class ALSettingsWidget(QWidget, Ui_ALSettingsWidget):
self.connectSignals()
self.loadSettings()
def closeEvent(
self,
event: QCloseEvent
):
self.settingsWidgetIsClosed.emit()
super().closeEvent(event)
def modifyUi(
self
):
@@ -153,35 +161,6 @@ class ALSettingsWidget(QWidget, Ui_ALSettingsWidget):
self.ApplyButton.clicked.connect(self.onApplyButtonClicked)
self.ConfirmButton.clicked.connect(self.onConfirmButtonClicked)
def showEvent(
self,
event: QShowEvent
):
result = super().showEvent(event)
screen_rect = self.screen().geometry()
target_pos = self.parent().geometry().center()
target_pos.setX(target_pos.x() - self.width()//2)
target_pos.setY(target_pos.y() - self.height()//2)
if target_pos.x() < 0:
target_pos.setX(0)
if target_pos.x() + self.width() > screen_rect.width():
target_pos.setX(screen_rect.width() - self.width())
if target_pos.y() < 0:
target_pos.setY(0)
if target_pos.y() + self.height() > screen_rect.height():
target_pos.setY(screen_rect.height() - self.height())
self.move(target_pos)
return result
def closeEvent(
self,
event: QCloseEvent
):
self.settingsWidgetIsClosed.emit()
super().closeEvent(event)
def loadSettings(
self
):