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++
Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
1893 0
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
3112 0
|
计算机视觉 Windows
Qt实用技巧:实现窗口透明的五种方法
Qt实用技巧:实现窗口透明的五种方法
Qt实用技巧:实现窗口透明的五种方法
超详细且简单的Qt Designer设置界面背景图
超详细且简单的Qt Designer设置界面背景图
超详细且简单的Qt Designer设置界面背景图
QString格式化的几种用法:补零/进制转换/保留小数位等
QString格式化的几种用法:补零/进制转换/保留小数位等
3841 0
QT设置widget背景图片
该内容介绍如何在Qt中为控件添加背景图片。主要方法包括:1) 在样式表中使用`border-image`属性指定控件及其背景图片;2) 使用调色板`QPalette`设置图片,但可能导致窗口显示不下;3) 在`paintEvent`中绘制图片,适合自定义绘图但不适用于子窗口;4) 通过覆盖一个大小与窗口相同的`QLabel`来设置背景图片,可实现动态背景。推荐使用样式表设置背景,简单高效且适合子窗口。
1655 3
|
存储 C++ 容器
(3)Qt中的变体数据类型(QVariant)
QVariant是Qt中一个强大的变体数据类型,能够存储和管理多种Qt和C++基本数据类型,包括自定义类型,并通过setValue()和value()方法进行赋值和取值。
1371 9
(3)Qt中的变体数据类型(QVariant)
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
3929 2
|
数据可视化
【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明
【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明
4977 3
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
2948 2