今天尝试了一个Qt的QGraphics框架,框架的概念如下:

具体的框架介绍不是本文的重点,就不多介绍,本文要解决的问题是在scene上绘制背景图片,并解决item移动破坏背景的问题。

毕竟scene单纯一个

this->sce->setBackgroundBrush(QColor(240,240,240));

设置背景颜色实在太过单调。

记录的思路如下:

今天主要成功设置了开机动画的背景。如何设置背景?从view,scene,item模型可以看出,背景应该在scene设置,百度了一下发现scene的drawbackground可以实现,但是这个函数不能直接调用。于是写了一个myScene类继承于QGraphicScene,重写drawbackground函数。

void MyScene::drawBackground(QPainter *painter, const QRectF &rect)
{QPixmap pm("../image/sce1.jpeg");painter->drawPixmap(rect,pm,QRect());
}

但是问题并没有就此解决,图片确实是显示出来了,但是在item移动的时候,背景会被破坏,就是背景被图片拖着走,就跟塑料融化的感觉一样。上网百度未果。

思考了一下,解决这个问题的方案其实还挺多。既然背景被破坏了,那我们只需要update一下应该就可以了。问题现在变成了选择题:是在advance里面update,还是在view上面update?当然,调用的都是scene 的update。问题是不确定scene 的槽函数advance是否能被重写,F1查看advance介绍,并没有virture修饰。

所以保险起见选择在view上面调用update。考虑到item的移动是通过timer来实现的,所以只需要在timeout的时候再连接一个scene的槽函数即可。

问题又来了,update的参数列表是update(RectF),即重绘的区域,而SIGNAL(timeout())则不带任何参数。所以要么给timer写一个新的信号,要么给scene写一个新的槽。但在这个情况下,如果选择前者,还要再写一个槽函数监听timerout和发送newtimeout(RectF)信号,而选择后者的话,由于我已经继承了一个新类myScene,所以在myScen里面写一个新的槽最为便捷。

void MyScene::myUpdate()
{this->update(0,0,this->width(),this->height());
}
connect(myTimer,SIGNAL(timeout()),this->sce,SLOT(advance()));
connect(myTimer,SIGNAL(timeout()),this->sce,SLOT(myUpdate()));

问题解决。

Qt QGraphicsScene绘制背景图片,并解决item移动破坏背景问题。相关推荐

  1. vue代码上传服务器后背景图片404解决方法

    vue代码上传服务器后背景图片404解决方法 参考文章: (1)vue代码上传服务器后背景图片404解决方法 (2)https://www.cnblogs.com/Mrrabbit/p/7830944 ...

  2. 设置背景图片,解决手机上背景图片高度适应问题

    设置背景图片,解决手机上背景图片高度适应问题 第一种方法:直接对图片进行设置,代码如下 <img src="url" class="PhoneBack"& ...

  3. html背景图片拉伸解决办法

    html背景图片拉伸解决办法 body {background-size: 100% 100%; //关键代码,直接拉伸背景图background-image: url("img/99.jp ...

  4. html内容被背景图片遮住怎么办_定义BODY背景图后,DIV的背景图片显示不全(已解决)...

    你的位置: 问答吧 -> WEB标准 -> 问题详情 定义BODY背景图后,DIV的背景图片显示不全(已解决) 一个有趣的问题,当BODY有背景图片的时候,BODY里的DIV一旦也有背景图 ...

  5. 【CSS】滑动门技术 ( 借助 CSS 精灵技术实现 | 外部标签设置左半部分背景图片 | 内部标签设置右半部分背景图片 | 鼠标经过更换背景 | 代码示例 )

    文章目录 一.滑动门技术 1.滑动门技术借助 CSS 精灵技术实现 2.外部标签设置左半部分背景图片 3.内部标签设置右半部分背景图片 4.鼠标经过时更换背景 二.完整代码示例 一.滑动门技术 1.滑 ...

  6. Java怎么让图片在窗体_在窗口添加背景图片-java怎么设置窗体的背景图片 – 手机爱问...

    2018-04-07 背景图片怎么设置? 背景图片代码:更换整体页面背景的源代码:body{b (大背景图片地址) repeatscroll!important;}更换页面题图logo图片的源代码:. ...

  7. 关于QGraphicsScene绘制大图片时产生空白的问题

    问题   很早之前,在使用QGraphicsScene绘制一张横向大约7万个像素的图片时,图片绘制出来出了问题.绘制出来的结果是图片只显示了大约一半的内容,另外一半则全是空白的.   发生这么严重的问 ...

  8. 微信小程序不能使用本地图片当背景图片的解决方法

    本来直接用的本地图片,但结果真机调试的时候无法显示,上网查了之后知道小程序图片只能加载网络上的(直接写链接),或者是base64转码后的 style="background-image:ur ...

  9. Qt设置按钮背景图片,点击不显示背景

    Qt设置按钮为图片样式方法 资源中准备两张不同颜色的图片,qtcreator中右键按钮,选择Change styleSheet,输入如下代码: QPushButton{image: url(:/new ...

最新文章

  1. PowerShell-Exchange:统计每天邮件收发
  2. 关于C#调用API的理解(汇多考勤机HD4K)
  3. mac终端修改默认python_Mac 修改默认python的版本
  4. 分布式ID生成器(来源:架构师之路,2017-06-25 58沈剑 架构师之路)
  5. LeetCode算法
  6. html5 斜率画线,一次函数的斜率与图像的关系
  7. 一文带你探究Sentinel的独特初始化
  8. hypermesh 连接单元_船舶方向测量单元motion sensor
  9. 提示找不到msvcr71.dll怎么办
  10. C++ 模板实例化与调用
  11. 打开你企业发展之门的钥匙
  12. 不写xml的MyBatis-Plus中关联属性的查询(1对1,1对n)
  13. 还找不到想要的文章吗?微信公众号搜索方法大全
  14. feedsky 话题 营销
  15. 屏幕亮度无法调节问题解决
  16. Android 图片添加白边
  17. matlab 函数 平移,MATLAB图线先下平移
  18. Spring中的Ioc、DI到底是啥
  19. Python之旅.第十章.mysql.
  20. ERP软件中功能测试的实用方法

热门文章

  1. 【电子书制作软件】云展网教程 | 在杂志页上添加书签功能
  2. 大数据分析师必备的5项技能,否则只能是水货
  3. centos m4安装linux,Centos Docker环境下安装Dcm4che归档服务
  4. android手机可以换字体吗,安卓手机字体怎么改?安卓手机爱字体换字体教程
  5. IDEA TOMCAT设置UTF-8编码
  6. java8Stream流的使用2--终止操作(分组,分区)
  7. 直接用照片重建,生成文化遗迹数字模型#Siggraph2022 顶会项目推荐
  8. centos7 文件搜索、文件内容搜索、管道
  9. JSCanvas画板
  10. Vue+高德地图api