Qt之QWidget设置窗口背景图片的几种方法_qwidget设置背景图-程序员宅基地

技术标签: Qt  qt5  



Qt之QWidget设置窗口背景图片的几种方法


几种方法如下:

1.使用调色板QPalette来设置图片

QPalette pal =this->palette();
pal.setBrush(QPalette::Background,QBrush(QPixmap(":/bg.jpg")));
setPalette(pal);

首先获得Widget的调色板,然后设置设置调色板背景(setBrush),最后将调色板设置到Widget中。

2.在paintEvent事件中绘制图片

void Widget::paintEvent(QPaintEvent * ev)
{
    
	QPainter painter(this);
	painter.drawPixmap(rect(),QPixmap(":/bg.jpg"),QRect());
}

drawPixmap在Widget的整个矩形区域绘制背景图片,第三个参数为要绘制的图片区域,传入空的矩形表示整个图片区域。通过这种方式可以将图片平铺到窗口上,缺点就是要使用paintEvent事件需要新建一个类,不适合子窗口。

3.使用样式表(setStyleSheet)
   使用样式表可以很方便设置界面,而且非常高效,还能让界面和逻辑分离。设置背景图片的语句也很简单。

setStyleSheet("border-image:url(:/bg.jpg)");

这里使用border-image属性可以让图片平铺到窗口。所以样式表比较适合子窗口来使用。

4.使用间接的方式来设置背景

   比如说在窗口上覆盖一个QLabel,这个label始终与窗口一样大。然后在label中设置图片,视觉效果上和直接给窗口设置背景图片一样。

Widget::Widget(QWidget *parent) :
	QWidget(parent)
{
    
	m_lblBg = new QLabel(this);
	m_lblBg ->setPixmap(QPixmap(":/bg.jpg"));
	m_lblBg ->setScaledContents(true);
}
void Widget::resizeEvent(QResizeEvent * ev)
{
    
	m_lblBg->resize(this->size());
}

创建一个label作为Widget的子窗口,然后设置图片。通过在Widget的resizeEvent事件中设置label的大小与Widget一致。这里需要注意调用QLabel的setScaledContents(true),否则效果和第一种一样。由于QLabel可以用来显示动图因此使用这种方式可以实现窗口的动态背景图片。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangbaba_1/article/details/113648465

智能推荐

python保存图片到指定路径_如何使用Python PIL(枕头)将图像保存在特定的文件目录中,而不会由于以下原因而发生KeyError:save_handler = SAVE [format.up...-程序员宅基地

文章浏览阅读1.3k次。I am trying to crop specific elements out of a larger image of the periodic table, then saving them in a specific file directory, this file directory is inside an additional folder, and this folder is..._python中numpy后保存图片到自定义路径

计算机基础一(计算机的数制)_数制数据在计算机内怎么表示与处理-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏10次。数制:人们在日常生活实践中,创造了多种表示数的方法,这些数的表示规则就被称为数制。数制的分类十进制基数为10,即逢十进一。由 0、1、2、3、4、5、6、7、8、9 十个数字组成。二进制基数为2,即逢二进一。由 0、1 两个数字组成。以0b开头。二进制是计算机中使用的数制,即所有的数据信息在计算机内部都是以二进制的形式来表示和处理的。计算机中使用二进制是因为二进制具有:可行性、简易性、逻辑性、可靠性的特点。二进制的弊端在于数字冗长、不便阅读。因此在计算机文献中常以八进制和十六进制表示。_数制数据在计算机内怎么表示与处理

1019:浮点数向零舍入-信息学一本通(c++)_1019:浮点数向零舍入 时间限制: 1000 ms 内存限制: 65536 kb 提交数: 963-程序员宅基地

文章浏览阅读705次。NOIP信息学奥赛资料下载时间限制: 1000 ms 内存限制: 65536 KB提交数: 16930 通过数: 12872【题目描述】输入一个单精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。提示:可以使用强制类型转换来实现。【输入】一个单精度浮点数。【输出】一个整数,即向零舍入到整数的结果。【输入样例】2.3【输..._1019:浮点数向零舍入 时间限制: 1000 ms 内存限制: 65536 kb 提交数: 96338 通过

轻量级Spring Boot & Spring Cloud项目自动部署Maven插件_springboot maven远程部署插件-程序员宅基地

文章浏览阅读496次。介绍deploy-helper是一個Spring Boot & Spring Cloud项目自动远程部署轻量级Maven插件.Gitee:https://gitee.com/dt_research_institute/deploy-helper通常情况下,我们将开发好的Spring Boot程序部署到服务器上时,会经历以下流程:1、maven项目打包2、通过sftp、scp软件将jar包拷贝到目标服务器上3、通过ps命令查找pid进程号,使用kill命令杀进程4、通过java命令启动j_springboot maven远程部署插件

327、基于STM32单片机的太阳能充电光电跟踪追踪管理系统设计(程序+原理图+配套资料等)_基于stm32单片机的太阳能充电器设计-程序员宅基地

文章浏览阅读1.1k次。STM32系列是为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:“增强型”STM32F103系列和“基本型”STM32F101系列。增强型系列的时钟频率能达到72MHz,是同类产品中频率最高的;基本型的时钟频率为36MHz,用16位产品一样的价格得到比16位产品更大的性能,是16位产品的最好选择。两个系列都有内置的32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。_基于stm32单片机的太阳能充电器设计

基于Matlab的数字滤波器程序,实现低通、高通、带通滤波和FFT频谱分析_matlab滤波器工具带通滤波器-程序员宅基地

文章浏览阅读712次,点赞11次,收藏15次。综上所述,我们基于Matlab环境开发了一款数字滤波器程序,该程序具有低通滤波器、高通滤波器和带通滤波器的功能,并且可以进行FFT频谱分析,以便对信号进行分析和处理。在本文中,我们将介绍一种基于Matlab的数字滤波器程序,该程序可以实现低通滤波器、高通滤波器和带通滤波器的功能,并且可以进行FFT频谱分析,以便分析信号中所含的谐波分量,并且可以对特定频率的波形进行提取。图a为原始信号,图b为原始信号FFT分析结果,图c为进行带通滤后的结果对比,图d为滤波后的FFT分析结果,效果非常好!_matlab滤波器工具带通滤波器

随便推点

各种实用配置,代理,修改源-程序员宅基地

文章浏览阅读511次,点赞7次,收藏8次。二、python包下载设置代理指定下载源清华源:豆瓣源:设置超时离线安装

java.lang.ClassNotFoundException:org.apache.commons.beanutils.BeanUtils_java.lang.noclassdeffounderror: org/apache/commons-程序员宅基地

文章浏览阅读834次。java.lang.ClassNotFoundException:org.apache.commons.beanutils.BeanUtilsjava.lang.NoClassDefFoundError:org/apache/commons/beanutils/BeanUtils这两个异常虽然不一样,但原因都是jar包的问题解决办法在src和web下的lib包中都要导入jar包..._java.lang.noclassdeffounderror: org/apache/commons/beanutils/beanutils

国产安全芯片,请关注他们!_acl16 pack-程序员宅基地

文章浏览阅读2.4k次。北京中电华大电子设计有限责任公司 (简称“华大电子”)成立于2002年6月,是国家认定的高新技术企业,是国内最早的集成电路设计企业之一,是中国安全芯片产业的核心企业。华大电子致力于物联网、车联网、智能交通、智能家居、智能制造、5G网络通讯、金融科技等领域的安全芯片产品及应用方案开发。华大电子秉承“积极主动 追求成功”的理念,面向蓬勃发展的中国新一代信息技术产业,提供“芯”产品和“芯”方案,与产业界融合发展,共同成就美好“芯”未来。1.2.1 智能卡芯片。_acl16 pack

X11 qt5.6.2 程序运行一段时间后卡死/不刷新/(死机)(_XReply)_libx11 qt卡死-程序员宅基地

文章浏览阅读3.8k次,点赞11次,收藏25次。X11 qt5.6.2 程序运行一段时间后卡死/不刷新/(死机)硬件:飞凌 imx6dl 开发板软件:linux 4.1.15 X11 qt5.6.2问题的现象:QT应用程序运行一段时间后会卡死(界面不刷新), 此时, top命令可以看到程序进程还在,cpu占用率为0 (图中Impella进程), 复现时间间隔不固定,可能量到三小时,或者一到两天。问题debug了 很久,基于对开发板厂商的信息, 一开始 怀疑QT 程序内有死锁,或陷入睡眠,死循环等。测试发现死锁或者睡眠,的现象与问题_libx11 qt卡死

Oracle数据库深入学习_oracle学习服务器-程序员宅基地

文章浏览阅读1.7w次,点赞60次,收藏256次。一、Oracle概念oracle数据可系统是美国oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器或B/S体系结构的数据库之一,oracle数据库时目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完善的数据库管理功能,是关系型数据库,比mysql更为庞大,在现行的关系型数据库中排名第一(oracle、mysql、SqlServe..._oracle学习服务器

pox控制器学习笔记_csdnpoxdesc-程序员宅基地

文章浏览阅读4.6k次,点赞4次,收藏9次。一、安装poxpox基于python2.7$ git clone http://github.com/noxrepo/pox$ cd pox~/pox$ git checkout dart二、调用pox如果想快速入门./pox.py samples.pretty_log Forwarding.l2_learningPOX本身有几个可选的命令行参数,这些参数可以在命令行开始..._csdnpoxdesc

推荐文章

热门文章

相关标签