Define custom "AppQSpinBox" to fix minimum width issue

Signed-off-by: LorenEteval <loren.eteval@proton.me>
This commit is contained in:
LorenEteval
2026-06-21 15:56:19 +08:00
committed by Loren Eteval
parent 7fd2131b81
commit bc50fa5a8b
3 changed files with 29 additions and 6 deletions
+1 -1
View File
@@ -79,7 +79,7 @@ class GuiEditorItemTextSpinBox(GuiEditorItemWidgetContainer):
title = _(title)
self._title = AppQLabel(title, translatable=translatable, parent=parent)
self._input = QSpinBox(parent=parent)
self._input = AppQSpinBox(parent=parent)
def value(self) -> int:
return self._input.value()
+27 -4
View File
@@ -48,6 +48,7 @@ __all__ = [
'AppQMenuBar',
'AppQMessageBox',
'AppQPushButton',
'AppQSpinBox',
'AppQTableView',
'AppQTableWidget',
'AppQTabWidget',
@@ -63,12 +64,16 @@ __all__ = [
def moveToCenter(widget, parent=None):
geometry = widget.geometry()
geometry = widget.frameGeometry()
if parent is None:
center = QApplication.primaryScreen().availableGeometry().center()
if parent is not None:
if parent.isWindow():
center = parent.frameGeometry().center()
else:
center = parent.mapToGlobal(parent.rect().center())
else:
center = parent.geometry().center()
screen = widget.screen() or QApplication.primaryScreen()
center = screen.availableGeometry().center()
geometry.moveCenter(center)
@@ -513,6 +518,24 @@ class AppQPushButton(Mixins.QTranslatable, Mixins.ThemeAware, QPushButton):
self.setText(_(self.text()))
class AppQSpinBox(QSpinBox):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def resizeHints(self):
self.setMinimumWidth(
max(
self.sizeHint().width(),
self.fontMetrics().horizontalAdvance(str(self.maximum())) + 100,
)
)
def setRange(self, *args, **kwargs):
super().setRange(*args, **kwargs)
self.resizeHints()
class AppQTableView(Mixins.ConnectionAware, QTableView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
+1 -1
View File
@@ -34,7 +34,7 @@ class IndentSpinBox(AppQDialog):
self.indentText = AppQLabel(_('Indent:'))
self.indentSpin = QSpinBox()
self.indentSpin = AppQSpinBox()
self.indentSpin.setRange(0, 8)
self.indentSpin.setValue(2)