In Qt ho un widget composito costituito da diversi QLabels disposti all'interno di QBoxLayouts. Quando il widget viene ridimensionato, desidero ridimensionare il testo dell'etichetta per riempire l'area dell'etichetta e ho implementato il ridimensionamento del testo in resizeEvent.Ridimensionamento automatico del testo dell'etichetta in Qt - comportamento strano
Questo funziona ma sembra che si verifichi una sorta di ciclo di feedback. Il widget composito viene inserito in una finestra principale all'interno di un QBoxLayout insieme ad altri widget. Quando la finestra principale viene ridotta, il widget composito mantiene inizialmente le sue dimensioni e quindi ridimensiona verso la dimensione corretta in diversi passaggi (circa 10-15). Se l'altezza del testo è impostata su un valore maggiore di circa 0,8 volte l'altezza dell'etichetta, quindi il ridimensionamento del testo e il widget contenente diventano più grandi ad ogni passaggio finché l'app non si arresta in modo anomalo.
È questo l'approccio corretto per ottenere questo effetto? In tal caso, quale potrebbe essere il problema con il ridimensionamento?
Di seguito è riportato il codice 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)
Impostazione di SizePolicy risolto il problema, grazie. – glennr