QWidget改变背景图的方法和坑

简介: QWidget改变背景图的方法和坑

前言

本篇文章将讲解QWidget改变背景图的方法和会遇到的问题。

一、添加背景图资源文件

添加资源文件

4ef570ed717845eb871f5d0d3ac519c1.png

8d4df0144bf64b778aa2b21adda102c8.png

b757d050628c458b8686817f8acfdc7f.png

添加对应背景图

67344cab966f48f08dc3b698304bd224.png

编译后出现资源文件:

e40ef4c38c934e1896998bd26ac0cf7e.png

二、使用 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的设计师界面

右击选择改变样式表:

8e46d8a0a9b645d8b272c1d4b6ca97cc.png

将要显示的背景图添加进去:


ae95224c8b47416fb66315dd212059e9.png

添加进去后就能直接看到这个背景图了:

032f4cb0ff914198addf745a3829ffc7.png

然后运行看结果:

94e285317f1d46e8bebda51f75e22ee8.png

可以看到什么都没有显示出来。这就是本篇文章要给大家讲解的坑。

因为这里我们使用的是QWidget类,这可能是QT不支持这样做吧,具体原因这里也没有去探究。

解决方法:

在QWidegt中再添加一个QWidegt在这个QWidegt中添加背景图就能直接显示出来了。

761fb247b6134435b1ac2bc32380660c.png

总结

本篇文章就讲解到这里,这是大家在使用QT开发中可能会遇到的一个错误,这里我给大家总结了几种设置背景图的方法,大家有什么别的想法也可以和我一起交流。

相关文章
|
C# 图形学
Winform控件优化之Paint事件实现圆角组件(提取绘制圆角的扩展方法)
Paint事件方法中实现圆角控件不要通过事件参数`e.ClipRectangle`获取控件区域范围,原因见最后介绍;注意设置控件背景透明(参见[Winform控件优化之背景透明那些事2...
806 0
Winform控件优化之Paint事件实现圆角组件(提取绘制圆角的扩展方法)
Qt实用技巧:对QPushButton(等类似透明有黑色背景的QWidget实现透明/半透明的方法
Qt实用技巧:对QPushButton(等类似透明有黑色背景的QWidget实现透明/半透明的方法
Qt实用技巧:对QPushButton(等类似透明有黑色背景的QWidget实现透明/半透明的方法
|
C++
VS C++改变窗体背景色
VS C++改变窗体背景色
155 0
|
前端开发 Android开发
圆形头像的7种显示方法
牙叔教程 简单易懂
244 0
QT软件开发: QGraphicsView设置无边框背景透明
QT软件开发: QGraphicsView设置无边框背景透明
666 0
QT软件开发: QGraphicsView设置无边框背景透明
PyQt5 技术篇-调用颜色对话框(QColorDialog)获取颜色,调色板的调用。
PyQt5 技术篇-调用颜色对话框(QColorDialog)获取颜色,调色板的调用。
399 0
PyQt5 技术篇-调用颜色对话框(QColorDialog)获取颜色,调色板的调用。
QT软件开发:解决隐藏QWidget标题栏后窗体无法移动问题
QT软件开发:解决隐藏QWidget标题栏后窗体无法移动问题
393 0