QTimeLine的使用案例

效果图:
在这里插入图片描述
  实现鼠标点击滑动切换页面,控件是在网上扒别人写好的,自己填了几个接口,颜色改了改。
  这个是从之前的大作业中提取出来的,控件没有实际意义,只是为了演示滑动效果。
本案例QTimeLine使用流程:
  

  • 初始化:new一个对象
	QTimeLine(int duration = 1000, QObject * parent = 0)
	//第一个参数设置的是持续时间,
	//可以理解为一次完整改变所需要的周期时间
  • 设置范围
	void QTimeLine::setFrameRange(int startFrame, int endFrame)
	//设置起始值和终止值,在本例中因为是切换整个屏幕,
	//所以起始值设置为0,终止值设置为窗口的宽度
  • 关联槽函数
	connect(timeLine_move, SIGNAL(frameChanged(int)), this, SLOT(slot_timeLine(int)));
	//注意:slot_timeLine是我自己实现的函数,可以换成其它的,
	//frameChanged是QTimeLine的信号,在特定的间隔时定时发出
	//发出时的参数是介于之前设置的范围之中的
  • 开始QTimeLine
	void QTimeLine::start()
	//启动QTimeLine,QTimeLine会处于运行态,
	//并在一定的间隔值内改变当前值(还有当前时间和frame,我不知道该如何理解)
	//并且会发送frameChanged信号,直到到当前值到达设定的范围时停止
	//可以在开始的时候设置方向,也就是说可以设置值的改变是 从起始值到终止值 还是终止值到起始值
  • 注意:
      在这个示例中滑动可能会出现多次滑动的情况,我的处理是如果QTimeLine已经在运行了,那么再滑动就直接不处理,所以用到了state函数,如果状态不是未运行或停止态则不予处理
	State QTimeLine::state() const
	//返回当前QTimeLine的运行状态。
	//如果是未运行或者是停止时返回0
	//如果是处于暂停状态则返回1
	//如果是处于运行态则返回2
  • 滑动事件捕捉方式
      没有找到相关的事件,于是就自己实现了试试,实现流程如下:
      重载mouseMoveEvent,记录每次按钮按下时的x坐标,然后在移动时判定移动时的x坐标是否大于按下时的坐标,如果大于就做窗口向右移动的处理,如果小于就做窗口向左移动的处理
      下载链接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值