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()
|
||||
|
||||
|
||||
@@ -119,17 +119,18 @@ QFrame#ribbonSep {
|
||||
}
|
||||
|
||||
/* ── Botones de la ribbon ──
|
||||
enabled: texto blanco claro #e2e7f5
|
||||
disabled: texto gris legible #7a8ba8 (contraste ≥ 3.5:1 sobre #343848)
|
||||
SIN max-width para que el texto nunca se corte */
|
||||
• font-size 12px para legibilidad clara
|
||||
• min-width se fuerza desde Python (fontMetrics) para nunca partir en 2 líneas
|
||||
• SIN max-width — texto siempre completo
|
||||
• disabled: #7a8ba8 — contraste ≥ 3.5:1 sobre #343848 */
|
||||
QToolButton#ribbonButton {
|
||||
background: transparent;
|
||||
color: #e2e7f5;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 3px;
|
||||
padding: 4px 8px 2px 8px;
|
||||
font-size: 11px;
|
||||
min-width: 48px;
|
||||
padding: 5px 10px 3px 10px;
|
||||
font-size: 12px;
|
||||
min-width: 56px;
|
||||
}
|
||||
QToolButton#ribbonButton:hover { background-color: #3e4255; border-color: #575e74; }
|
||||
QToolButton#ribbonButton:pressed { background-color: #4da8ff; color: #fff; border-color: #4da8ff; }
|
||||
|
||||
Reference in New Issue
Block a user