【QT】 QLabel背景图片自适应窗口大小

这是最终效果:

在这里插入图片描述

想要图片跟随窗口自适应大小,首先我们先对QWidget进行网格布局,布局效果如下:
在这里插入图片描述
布局完成后添加 QLabel 代码,新建 QLabel 并且设置为可扩展内容,再设置图片放置最后面,否则图片在最前面会遮挡控件。

	label = new QLabel(this);					// 新建一个标签
    label->setScaledContents(true);				// 设置标签为可扩展内容
    label->setPixmap(QPixmap("2.png"));			// 设置图片
    label->lower();								// 将图片放置后面

然后重写 qt 的绘画事件:

void paintEvent(QPaintEvent*) override;			

这是绘画事件的实现代码:

void Widget::paintEvent(QPaintEvent*)
{
    label->resize(ui->widget->size());
}

将标签调整为我们布局 QWidget 的大小便大功告成!
原理就是当我们拉伸窗口或者放大缩小窗口时会执行绘画事件,利用 QWidget 的布局自适应大小,将我们的 QLabel 调整成 QWidget 的大小,从而达到图片的自适应窗口大小。


版权声明:本文为weixin_46168054原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。