查看完整版本: [-- Android平台QGLWidget的子控件会有重影 --]

QTCN开发网 -> Qt移动平台开发 -> Android平台QGLWidget的子控件会有重影 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

zone666666 2017-10-30 17:19

Android平台QGLWidget的子控件会有重影


我用用Qt Creator for android写了一个指北针控件类MapCompass,

在该控件的paintEvent中绘制“十”字表示标准方向,周围根据偏移角度offsetAngle值,绘制白色环形刻度,以及红色正北指针,类似苹果手机的指南针界面。

该控件设置背景为透明setAttribute(Qt::WA_TranslucentBackground,true);

使用osgEarth加载地图,最终显示地图的控件是osg提供的GLWidget类,继承自QGLWidget。

在地图上添加指北针控件,并使用定时器测试指北针在地图上转动是否正常时,发现:在安卓平板上指北针界面的底部出现了残影,也就是说每次重绘之后好像并没有清空上一次重绘的内容,上次绘制残留的影像仍留在底部的GLWidget上。而且如果在界面上添加任何控件,并对控件进行hide,控件是可以被hide掉的,但是控件的影像依然留在GLWidget上。后来我去掉了地图控件,直接用一个空的QGLWidget来代替,依然存在这样的问题。

随后我又试了一下,在MainWindow上加指北针,如果我把MainWindow设为透明,也会出现这种情况,于是我看了一下QGLWidget的源码,发现在构造函数里设置了setAttribute(Qt::WA_PaintOnScreen);也就是说QGLWidget绘制图像是直接绘制在屏幕上的,这和MainWindow透明时发生的错误如出一辙。也就是说在安卓平板上如果直接在屏幕上绘图就会出现残影的现象,不知道有什么好的解决方法?


zone666666 2017-10-31 09:14


查看完整版本: [-- Android平台QGLWidget的子控件会有重影 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled