- 记录下初始控件文字和窗口的初始大小
m_font_size_ = ui->label->font().pointSize();
m_base_width = this->width();
- 重写窗口的resizeEvent事件
double width = this->width();
double ratio = width / m_base_width;
double newFontSize = (m_font_size_ * 1.0) * ratio;
auto font = ui->label->font();
font.setPointSize(newFontSize);
ui->label->setFont(font);
- 优化
上述代码只根据宽度进行缩放,可以增加一条高度记录,如果宽度没有变化则判断高度是否变化,反之亦然。