2 KiB
2 KiB
动画特效
使用QPropertyAnimation属性类动画(支持的属性有限)
1、窗口淡入淡出
- 使用
QPropertyAnimation
对窗口的windowOpacity
透明度属性进行修改 - 窗口启动时开启透明度0-->1的动画
- 尝试先取消动画完成后关闭窗口的信号(使用同一个动画对象,在关闭窗口动画的时候连接了动画结束后关闭窗口的信号)
- 停止旧动画开启新动画
- 窗口关闭时开启透明度1-->0的动画
- 停止就动画
- 绑定动画完成后
finished
信号连接到close
关闭窗口函数
2、右键菜单动画
- 使用
QPropertyAnimation
对菜单控件的geometry
属性进行修改 - 当菜单事件
contextMenuEvent
触发时调用动画启动,同时显示菜单
3、按钮放大缩小动画
- 使用
QPropertyAnimation
对按钮的geometry
属性进行修改 - 针对按钮在布局中或者没有在布局中两种情况,需要对主窗口的
showEvent
和resizeEvent
两个事件进行重写,从而达到更新按钮的最新geometry
值 - 主动调用按钮的
updatePos
函数来更新geometry
值
比如:
def showEvent(self, event):
super(TestWindow, self).showEvent(event)
# 更新按钮的位置
self.button1.updatePos()
# 针对不在控件中的按钮
self.button2.move(self.width() - self.button2.width() - 15,
self.height() - self.button2.height() - 10)
self.button2.updatePos()
def resizeEvent(self, event):
super(TestWindow, self).resizeEvent(event)
# 更新按钮的位置
self.button1.updatePos()
# 针对不在控件中的按钮
self.button2.move(self.width() - self.button2.width() - 15,
self.height() - self.button2.height() - 10)
self.button2.updatePos()