fix(ribbon): calcular ancho mínimo de botones desde métricas de texto
Qt dimensiona QToolButton por el ícono (22px), no por el texto, lo que causaba que etiquetas como 'Nuevo Tq.' se cortaran al renderizar. Ahora add_button() usa fontMetrics().horizontalAdvance(text)+20 para establecer setMinimumWidth() correcto en cada botón. Además: RibbonBar.setFixedHeight(110) (antes 92), padding y font-size del ribbonButton QSS aumentados ligeramente para mejor legibilidad. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -689,6 +689,14 @@ class RibbonGroup(QFrame):
|
||||
btn.setEnabled(enabled)
|
||||
if slot:
|
||||
btn.clicked.connect(slot)
|
||||
|
||||
# Forzar ancho mínimo basado en el texto para que nunca se parta en 2 líneas.
|
||||
# Qt calcula el ancho por el ícono (22 px), no por el texto →
|
||||
# "Nuevo Tq." se rompe y la segunda línea queda cortada.
|
||||
fm = btn.fontMetrics()
|
||||
min_w = max(56, fm.horizontalAdvance(text) + 20)
|
||||
btn.setMinimumWidth(min_w)
|
||||
|
||||
self._btn_lo.addWidget(btn)
|
||||
return btn
|
||||
|
||||
@@ -709,7 +717,7 @@ class RibbonBar(QWidget):
|
||||
def __init__(self, parent: Optional[QWidget] = None) -> None:
|
||||
super().__init__(parent)
|
||||
self.setObjectName("ribbonBar")
|
||||
self.setFixedHeight(92)
|
||||
self.setFixedHeight(110) # 26 tab-row + 84 content (suficiente para 22px icon + texto 1 línea + título grupo)
|
||||
self._tab_btns: list[QToolButton] = []
|
||||
self._build_ui()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user