提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、添加背景图资源文件
- 二、使用 QPalette
- 三、重写paintEvent() 函数
- 四、使用QT的设计师界面
- 总结
前言
本篇文章将讲解QWidget改变背景图的方法和会遇到的问题。
一、添加背景图资源文件
添加资源文件
添加对应背景图
编译后出现资源文件:
二、使用 QPalette
在 Qt 中,可以使用 QPalette 类和 QWidget 的 setPalette() 函数来改变控件的颜色、背景图等。
QPalette 类提供了一种处理颜色和绘图相关属性的通用方式,可以作为 QWidget 的属性之一,在改变控件颜色、背景图等方面被广泛应用。
QPalette 的 Background 属性可以指定控件的背景色或背景图。通过 QBrush 类型的参数向 Background 属性传递 QPixmap 对象来设置背景图。
// 设置 QWidget 的背景图
QPixmap pixmap(":/LEDUI.png");
QPalette palette;
palette.setBrush(backgroundRole(), QBrush(pixmap));
setPalette(palette);
setAutoFillBackground(true);
三、重写paintEvent() 函数
这里可以重写paintEvent() 函数来重写绘制背景图。
QPainter里面有一个drawPixmap函数,我们首先可以得到背景图的QPixmap,然后再使用drawPixmap函数将其绘制出来。
// 重写 paintEvent() 函数来设置 QWidget 的背景图
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPixmap pixmap(":/LEDUI.png");
painter.drawPixmap(0, 0, pixmap.scaled(width(), height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
}
四、使用QT的设计师界面
右击选择改变样式表:
将要显示的背景图添加进去:
添加进去后就能直接看到这个背景图了:
然后运行看结果:
可以看到什么都没有显示出来。这就是本篇文章要给大家讲解的坑。
因为这里我们使用的是QWidget类,这可能是QT不支持这样做吧,具体原因这里也没有去探究。
解决方法:
在QWidegt中再添加一个QWidegt在这个QWidegt中添加背景图就能直接显示出来了。
总结
本篇文章就讲解到这里,这是大家在使用QT开发中可能会遇到的一个错误,这里我给大家总结了几种设置背景图的方法,大家有什么别的想法也可以和我一起交流。