Trong Qt, tôi có một widget tổng hợp bao gồm một số QLabels được sắp xếp bên trong QBoxLayouts. Khi tiện ích được thay đổi kích thước, tôi muốn văn bản nhãn mở rộng để lấp đầy khu vực nhãn và tôi đã triển khai thay đổi kích thước của văn bản trong resizeEvent.Tự động thay đổi kích thước văn bản nhãn trong Qt - hành vi lạ
Điều này có tác dụng nhưng dường như có một số loại phản hồi xảy ra. Widget tổng hợp được đặt trong một cửa sổ chính bên trong QBoxLayout cùng với một số tiện ích khác. Khi cửa sổ chính được làm nhỏ hơn, tiện ích tổng hợp ban đầu duy trì kích thước của nó và sau đó thay đổi kích thước về kích thước chính xác trong một vài bước (khoảng 10-15). Nếu chiều cao của văn bản được đặt cao hơn khoảng 0,8 lần chiều cao nhãn thì việc thay đổi kích thước văn bản và chứa tiện ích con sẽ tăng lớn hơn với mỗi bước cho đến khi ứng dụng gặp sự cố.
Đây có phải là cách tiếp cận chính xác để đạt được hiệu ứng này không? Nếu vậy, vấn đề có thể là gì với việc thay đổi kích thước?
Dưới đây là mã 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)
(sử dụng PyQt4 4.8, Qt 4.7.4, Win 7 & OSX 10,6)
Đặt SizePolicy khắc phục sự cố, cảm ơn. – glennr