En Qt tengo un widget compuesto que consta de varias QLabels dispuestas dentro de QBoxLayouts. Cuando el widget se redimensiona, quiero que el texto de la etiqueta se escale para llenar el área de la etiqueta y he implementado el cambio de tamaño del texto en resizeEvent.Cambio automático del tamaño del texto de la etiqueta en Qt: comportamiento extraño
Esto funciona pero parece que hay algún tipo de ciclo de retroalimentación. El widget compuesto se coloca en una ventana principal dentro de un QBoxLayout junto con algunos otros widgets. Cuando la ventana principal se hace más pequeña, el widget compuesto inicialmente mantiene su tamaño y luego se redimensiona hacia el tamaño correcto en varios pasos (alrededor de 10-15). Si la altura del texto se establece en más de alrededor de 0,8 veces la altura de la etiqueta, entonces al redimensionar el texto y el widget que lo contiene aumentará de tamaño con cada paso hasta que la aplicación se bloquee.
¿Es este el enfoque correcto para lograr este efecto? Si es así, ¿cuál podría ser el problema con el cambio de tamaño?
A continuación se muestra el código resizeEvent.
def resizeEvent(self, evt):
print("resizeEvent", evt.size().width(), evt.size().height())
QFrame.resizeEvent(self, evt)
dataLabels = self.dataPanels.values()
for label in dataLabels:
font = label.font()
h = label.height()
h2 = h * 0.8
font.setPixelSize(h2)
label.setFont(font)
(usando PyQt4 4.8, Qt 4.7.4, Win 7 & OSX 10,6)
Configurando SizePolicy corrigió el problema, gracias. – glennr