在窗口程序中,当我们改变窗口大小的时候,背景图片通常会岁窗口大小变化而缩放

然而,在我们写的窗口程序中,设置背景图片后,如果缩放大小,会看到背景图片并不会随之缩放,

应为这需要特殊处理,一般常用的方法就是 改变设为背景图片的 pixmap 的大小,在发生resize事件的时候,

将改变完大小的pixmap重新设置为有新size窗口的背景图片

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

主要的实现代码如下

 //设置背景图片
void Widget::setBackgroundImage(QPixmap&pixmap)
{
//判断图片是否为空
if(pixmap.isNull()){
qDebug() << tr("illege arguments") <<endl;
return;
}
//设置窗口的背景
QPalette palette = this->palette();
palette.setBrush(this->backgroundRole(),
QBrush(pixmap.scaled(this->size(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation)));
this->setPalette(palette);
} //重载resizeEvent
void Widget::resizeEvent(QResizeEvent *)
{
setBackgroundImage(m_backPixmap);
}

值得注意的是 , 要使窗口的背景图片显示出来的时候 , widget 的  autoFillBackground 属性一定要为 true,

(调用 setAutoFillBackground(true) 就ok 了)

Qt5:随窗口大小变化背景图片自动缩放的实现的更多相关文章

  1. 如何通过CSS实现背景图片自动平铺或拉伸至整个屏幕(自适应大小)

    默认情况下,通过HTML代码的BODY标签设置好背景图片<body background="x.jpg"> 后,图片会自动横向和纵向平铺.这就会产生一些美观上的问题. ...

  2. Qt中的Label和PushButton背景图自动缩放设置

    Label 背景图自动缩放 QPixmap* pixmap = new QPixmap(":/images/HeadIcon/1.png"); pixmap->scaled( ...

  3. css样式背景图片设置缩放

    一.背景颜色图片平铺 background-color 背景颜色 background-image 背景图片地址 background-repeat 是否平铺 默认是平铺 background-pos ...

  4. QT中给各控件增加背景图片(可缩放可旋转)的几种方法

    http://blog.csdn.net/liukang325/article/details/44832397 1. 给QPushButton 增加背景图片:背景图片可根据Button大小自由缩放. ...

  5. js控制图片自动缩放,实现铺满盒子,不变形,完全局中

    此js一般用于控制图片铺满盒子,但是比例不变,并且绝对局中原理:判断图片的高宽与盒子高宽的大小的关系,然后通过比例来控制图片的缩放及定位<!DOCTYPE html PUBLIC "- ...

  6. 纯css的防止图片撑破页面的代码(图片自动缩放)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. CSS小技巧-图片自动缩放

    css的一个重要属性:max-width min-width 示例: <div width="500" height="259"><p> ...

  8. table中background背景图片自动拉伸

    <table  background="login/image/jiaozhouwan.jpg" style="background-size: 100% 100% ...

  9. 让低版本IE支持css3背景图片缩放属性background-size

    IE7,8中不支持背景图片的缩放.下面的代码可以帮你实现兼容 background: url(/content/img/yuehuibtn.png);//css3代码 background-size: ...

随机推荐

  1. leetcode383

    已知两个字符串,然后比较一个字符串是否来自另一个字符串,没有顺序要求. 简单题,用一个数组保存前一个字符串的每一个字符出现的次数,然后循环后一个字符串去检查,如果次数不够了,那么就返回false pu ...

  2. JavaScript高级程序设计:第十章

    一.理解包含不同层次节点的DOM 1.节点层次 以下面的HTML为例: <html> <head> <title>Sample Page</title> ...

  3. JavaScript 错误 - Throw、Try 和 Catch

    http://www.w3school.com.cn/js/js_errors.asp try 语句测试代码块的错误.catch 语句处理错误.throw 语句创建自定义错误. 错误一定会发生 当 J ...

  4. 认识ASP.NET MVC的5种AuthorizationFilter

    在总体介绍了筛选器及其提供机制(<深入探讨ASP.NET MVC的筛选器>)之后,我们按照执行的先后顺序对四种不同的筛选器进行单独介绍,首先来介绍最先执行的AuthorizationFil ...

  5. hdu 1394 Minimum Inversion Number(这道题改日我要用线段树再做一次哟~)

    Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of ...

  6. (转) 三个nginx配置问题的解决方案

    今天开启了nginx的error_log,发现了三个配置问题: 问题一: 2011/07/18 17:04:37 [warn] 2422#0: *171505004 an upstream respo ...

  7. servlet第3讲(中集)----同一用户的不同页面共享数据

    5.session 5.1session概述 5.2.session应用举例  

  8. DB层级

    最上层:              业务层 负载均衡:            LVS 代理层:           DB-PROXY DB层:            DB主库   DB从库 随着DB出 ...

  9. IIS7禁止后台访问

    设置只能内网访问 1.添加允许内网访问规则 2.编辑功能设置

  10. zend frameword 基本语法

    #resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"#resources.frontCo ...