先上链接,qt material风格的源码:
https://github.com/laserpants/qt-material-widgets
再上效果图:
效果图上面的源码链接中就有。还有一些未列出来。
现在列几个涉及到的知识点链接:
1、Q_D Q_Q d_ptr q_ptr这些概念理解可以参考
http://blog.csdn.net/rabinsong/article/details/9474859
https://blog.csdn.net/qq_39937902/article/details/79738160
2、qpropertyanimation可以参考
https://blog.csdn.net/kaida1234/article/details/82896611
这里用到了qeasingcurve,非常有趣的一个东西。想实现平滑的滑动效果,平滑的动画效果,或者平滑抖动效果,都可以用qeasingcurve。具体曲线可以参考官方文档,有多种有趣的曲线。
https://doc.qt.io/qt-5/qeasingcurve.html
3、qstatemachine状态机可以参考
https://my.oschina.net/u/3919756/blog/2054607
用例比较简单,看example里的例子即可,下面简单讲下我对典型实现原理的理解。
第一幅图中,点击左边的按钮会出线涟漪,涟漪的原理是通过动画的easycurve实现先快后慢的消失和先小后大的圆圈。通过easycurve得到当前的透明度和当前的圆圈大小,在paintEvent里画出来的。如果是多次点击则画出多个圈。效果就得到了。