• 24220阅读
  • 33回复

GlowEffect——发光效果的QGraphicsEffect [复制链接]

上一主题 下一主题
离线roywillow
 

只看楼主 倒序阅读 楼主  发表于: 2012-08-23
— 本帖被 XChinux 执行加亮操作(2016-04-23) —
闲来无事继承QGraphicsEffect,实现了一个发光效果:

或许与跑马灯合用会有不错的效果哦
感觉有些地方还可以精简一下,效率好像也没有最优,希望大家能一起修正一下。
GlowEffect.zip (3 K) 下载次数:650

XChinux注:该代码已加入Tianchi项目:
https://github.com/qtcn/tianchi/blob/master/inc/Gui/GlowEffect.h
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线mewjerry
只看该作者 1楼 发表于: 2012-08-23
-。-看起来真不错,希望效率也还好;Qt的effect系列效果最大的缺点就是效率,它几乎在每次repaint的时候都会重绘,对于一个需要频繁重绘的Widget,就力不从心了。。
离线周大侠
只看该作者 2楼 发表于: 2012-08-27
好好学习的程序员
离线kh99827765

只看该作者 3楼 发表于: 2012-12-04
必须顶……
离线shiziyang

只看该作者 4楼 发表于: 2012-12-04
mac下跑貌似没效果啊
离线roywillow

只看该作者 5楼 发表于: 2013-01-14
回 4楼(shiziyang) 的帖子
really?
贴上你的测试代码和截图?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线shiziyang

只看该作者 6楼 发表于: 2013-01-15


直接拿附件的工程在mac下现编现跑
离线unizii

只看该作者 7楼 发表于: 2013-02-01
回 1楼(mewjerry) 的帖子
如果不经常repaint那光晕岂不是跟内容不同不了??????????
离线unizii

只看该作者 8楼 发表于: 2013-02-01


看来在KDE下才是真正的原生样式,和Oxygen主题很搭配!!
离线unizii

只看该作者 9楼 发表于: 2013-02-02
好酷的效果啊
离线hitler++

只看该作者 10楼 发表于: 2013-02-22
离线roywillow

只看该作者 11楼 发表于: 2013-04-21
回 6楼(shiziyang) 的帖子
今个突然想起来这个东西,回来看了看……
待我跑一下看看
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 12楼 发表于: 2013-04-21
回 8楼(unizii) 的帖子
O.O 有种无心插柳柳成荫的赶脚
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 13楼 发表于: 2013-04-21
回 6楼(shiziyang) 的帖子
Mac OS X 10.8测试没问题啊……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线XChinux

只看该作者 14楼 发表于: 2013-04-21
楼主可整理一下添加到https://github.com/qtcn/tianchi库中去。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线roywillow

只看该作者 15楼 发表于: 2013-04-21
回 14楼(XChinux) 的帖子
学校里访问github无力,git咱也是个新手,加上似乎最近课程略紧……
如果这代码天池用得到的话,随便拿去用就好了
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线XChinux

只看该作者 16楼 发表于: 2013-04-22
Re:回 14楼(XChinux) 的帖子
引用第15楼roywillow于2013-04-21 21:15发表的 回 14楼(XChinux) 的帖子 :
学校里访问github无力,git咱也是个新手,加上似乎最近课程略紧……
如果这代码天池用得到的话,随便拿去用就好了

那我来整理吧,感谢楼主的贡献。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 17楼 发表于: 2013-04-22
qt_blurImage()这个函数是在哪里的?找到了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 18楼 发表于: 2013-04-22
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线ppdayz

只看该作者 19楼 发表于: 2013-04-22
刚刚去下了tianchi的,编译了下,提一点建议,发现里面文件的编码有的是UTF-8,有的是GKB的,最好编码都能统一成UTF-8的,这样查看源码的时候会方便一点
离线roywillow

只看该作者 20楼 发表于: 2013-04-22
回 18楼(XChinux) 的帖子
谢老大
不过代码中用到的那些Q_宏一直理解不了,有啥介绍吗?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线XChinux

只看该作者 21楼 发表于: 2013-04-22
Q_DISABLE_COPY(GlowEffect)
这个是禁止实现operator = ,以防止拷贝

Q_DECLARE_PRIVATE(GlowEffect)

这个是声明d_func()来方便返回 GlowEffectPrivate类成员d_ptr(可以看qglobal.h里的宏定义),这样就不用自己来进行类型转换了.

Q_D(GlowEffect);

这个相当于GlowEffectPrivate *d = d_ptr();
所以后面就能用d->radius  这样来使用GlowEffectPrivate类的东西了.

同样的
Q_Q(GlowEffect);相当于GlowEffect *q = q_func();这样就能在GlowEffectPrivate类的成员函数里使用q->xxxx来调用主类的成员了.

以上实现,是参考Qt的数据隐藏方法,凡是有私有成员(包括函数/变量)时,都定义在GlowEffectPrivate类里, 如此修改代码时,接口部分(即GlowEffect类声明)不用改变,  对应的类接口使用说明/使用到这个类头文件的其它文件也就不需要重新编译.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 22楼 发表于: 2013-04-22
引用第19楼ppdayz于2013-04-22 10:15发表的  :
刚刚去下了tianchi的,编译了下,提一点建议,发现里面文件的编码有的是UTF-8,有的是GKB的,最好编码都能统一成UTF-8的,这样查看源码的时候会方便一点

统一用GBK的吧,以源代码级兼容msvc/gcc等.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线roywillow

只看该作者 23楼 发表于: 2013-04-22
回 21楼(XChinux) 的帖子
嗯,明白了
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线XChinux

只看该作者 24楼 发表于: 2013-04-22
在GlowEffect.cpp最后加了#include "moc_GlowEffect.cpp",这是为了处理在Qt4中编译moc_xxx.cpp时不能自动将Tianchi namespace包含进去的问题.   Qt源代码是这样写的,我不知道有没有其它的方法(含MOC的宏)来专门处理这个问题.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线shiziyang

只看该作者 25楼 发表于: 2013-04-22
回 13楼(roywillow) 的帖子
可能是qt库的问题吧,我是mac10.6+qt4.7.0-carbon库的,大概cocoa库的就没问题
离线roywillow

只看该作者 26楼 发表于: 2013-04-22
回 25楼(shiziyang) 的帖子
这个当时写代码的时候应该是4.8,现在测试windows和mac下5.0.2也没问题
只是对图像进行了一些模糊和绘制,会跟carbon有关么……?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 27楼 发表于: 2014-09-06
回 woniu600 的帖子
woniu600:你好,我问下..
请问在效果使用完后,怎么删除这个效果??      
....... (2014-09-04 20:51) 

呃……还真没注意过
强制调用一下pushButton->update()呢?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线ygyuuu

只看该作者 28楼 发表于: 2015-05-07
回 XChinux 的帖子
XChinux:qt_blurImage()这个函数是在哪里的?找到了。
 (2013-04-22 09:14) 

undefined reference to `qt_blurImage(QImage&, double, bool, int)'
是个外部的 怎么找到
离线ygyuuu

只看该作者 29楼 发表于: 2015-05-07
undefined reference to `qt_blurImage(QImage&, double, bool, int)'
楼主,这个怎么破
离线stlcours

只看该作者 30楼 发表于: 2015-07-27
简单实用~楼主后生可畏
离线862343646

只看该作者 31楼 发表于: 2015-08-12
楼主,恩人啊
离线姜小白

只看该作者 32楼 发表于: 2016-04-23
我整理的一些文章,持续更新中,有兴趣的小伙伴可以关注。
https://xiaozhuanlan.com/sorghum-cpp?rel=sorghum

Qt技术交流:QQ2499971906
离线big_mouse

只看该作者 33楼 发表于: 2020-04-15
快速回复
限100 字节
 
上一个 下一个