首页| 论坛| 消息

标题:QT5实现窗体半透明阴影,paintEvent()重绘底图有残留
作者:zhangjin512
日期:2013-04-18 19:00
内容:

源码:

派生类class GStyleWidget : public QWidget
构造函数中设置窗体无边框,背景透明
this->setWindowFlags(Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground,true);

重载void paintEvent(QPaintEvent *event),绘制窗体背景图片,背景图片为一张带半透明阴影的圆角矩形PNG底图,主要利用九宫格的思想去实现的。
运行程序后,界面正常,如下:

能正常显示半透明阴影,可是如果切换几次窗口后,每次窗体重绘,都会残留上次绘制的底图,导致效果变成如下图:

阴影已经不再半透明了,而是不断不擦除地重绘造成的黑边框。


如果调整窗体的大小后,窗体效果又会变回正常(说明窗体大小发生改变时,重绘窗体又擦除原有的背景);


哪位大侠知道为什么吗?求解!!!(代码已上传)


小弟的机器环境:WINDOWS XP SP3+QT5.0.1


#1 回 楼主(zhangjin512) 的帖子 [jdwx 04-18 19:30]
可以把整个的工程打包发上来,研究研究。
#2 回 1楼(jdwx) 的帖子 [zhangjin512 04-19 11:15]
代码已经上传了,版主大侠帮我看看呗
或者有没有其他解决办法,我这里主要是想实现圆角带阴影的窗体风格。
#3 回 2楼(zhangjin512) 的帖子 [jdwx 04-19 12:43]
我测试了:debug和release,都没有问题,始终是正常的。Qt5.0.2 + VS2010 + window7
#4 回 3楼(jdwx) 的帖子 [zhangjin512 04-19 14:08]
估计是跟操作系统有关系,之前就有发现QT5在XP上使用会存在一些问题,不知道QT5在发布的时候有没在XP系统上认真测试过。
谢谢jdwx,我回去用WIN7系统试试!
#5 回 4楼(zhangjin512) 的帖子 [jdwx 04-19 14:18]
XP确实该下班了。

<< 1 2 3 >> (1/3)

回复 发表
主题 版块