В Qt У меня есть составной виджет, состоящий из нескольких QLabels, расположенных внутри QBoxLayouts. Когда размер виджета изменен, я хочу, чтобы текст метки был масштабирован, чтобы заполнить область ярлыков, и я внедрил изменение размера текста в resizeEvent.Автоматическое изменение размера текста меток в Qt - странное поведение
Это работает, но, похоже, происходит какая-то контур обратной связи. Составной виджет размещается в главном окне внутри QBoxLayout вместе с некоторыми другими виджетами. Когда основное окно становится меньше, составной виджет первоначально сохраняет свой размер и затем изменяет размер до нужного размера в несколько этапов (около 10-15). Если высота текста установлена более чем в 0,8 раза, высота ярлыка, а затем изменение размера текста и содержимого виджета увеличивается с каждым шагом, пока со временем приложение не сработает.
Это правильный подход для достижения этого эффекта? Если да, то какова может быть проблема с изменением размера?
Ниже представлен код 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)
(с использованием PyQt4 4.8, Qt 4.7.4, Win 7 & OSX 10.6)
Установка параметра SizePolicy исправила проблему, спасибо. – glennr