之前看到了QStackedWidget做切换动画,让界面不那么生硬,于是参考了 http://qt.shoutwiki.com/wiki/Extending_QStackedWidget_for_sliding_page_animations_in_Qt 做了一个QStackedWidget的切换动画,然后利用QStackedWidget结合多个QLabel显示图片来做一个轮播效果。

其实在写之前也在网上找了很多例子,参看过后发现大多例子都是利用到了paintEvent去绘制,这样其实还是比较麻烦,个人觉得更好的方式是使用QPropertyAnimation属性动画修改控件中QLabel图片控件的pos位置属性就可以达到移动效果了。

QSlider 在通常情况下支持鼠标点击可以任意拖动,或者鼠标点击则往鼠标点击的方向移动一小格,这种移动一小格通常情况下用起来很不方便,比如我要做一个播放器的播放进度条,肯定是点击某个位置就直接跳到该位置,为此需要对 QSlider 的鼠标事件mousePressEvent进行重写。

做过安卓开发的和使用过QQ的都知道.9.png这种图片格式,效果就如QQ的聊天气泡一样可以拉伸,这种格式的图片允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展;允许开发人员定义内容显示区,用于显示文字或其他内容。目前在Github上有两个C++版本的,在这里我把它们都用Python实现了一遍。另外一个我也为PyQt提供了编译好的pyd文件。

有时候会遇到这种需求:在界面某个位置弹出一个菜单,其中里面的菜单项可以多选(类似配置选项),此时用QMenu会遇到点击一个菜单项就会自动关闭,当然可以通过其他方式实现该功能,不过这里就采用QMenu通过特殊的方式来实现该需求。