在Qt中,我有一個複合小部件,它由QBoxLayouts中的幾個QLabel組成。當窗口小部件被調整大小時,我希望標籤文本能夠縮放以填充標籤區域,並且我已經實現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,運7 & OSX 10.6)
設置SizePolicy解決了問題,謝謝。 – glennr 2012-01-10 21:09:47