QT 实现滑动预览怎么实现,如图,在线等急急急

突然之间发现自己很帅 2017-08-17 04:40:40
...全文
1338 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-08
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10794527.html
m0_45357574 2021-04-28
  • 打赏
  • 举报
回复
你好,有代码吗,借鉴下。
  • 打赏
  • 举报
回复
引用 4 楼 qqwangfan 的回复:
[quote=引用 3 楼 a243843120 的回复:] 谢谢你的回复,在QT上想做这个效果了,是左右滑动切换图片,然后点击图片产生对应的事件 请问这个能实现吗? 除了QML 还有其他方法吗
左右滑动切换图片就可以用qt动画功能实现,点击图片产生对应的事件可以使用安装控件过滤器方法实现。不需要QML啊,直接qt代码就可以实现。[/quote]
引用 4 楼 qqwangfan 的回复:
[quote=引用 3 楼 a243843120 的回复:] 谢谢你的回复,在QT上想做这个效果了,是左右滑动切换图片,然后点击图片产生对应的事件 请问这个能实现吗? 除了QML 还有其他方法吗
左右滑动切换图片就可以用qt动画功能实现,点击图片产生对应的事件可以使用安装控件过滤器方法实现。不需要QML啊,直接qt代码就可以实现。[/quote] 请问有例子吗?想研究研究
  • 打赏
  • 举报
回复
引用 3 楼 a243843120 的回复:
谢谢你的回复,在QT上想做这个效果了,是左右滑动切换图片,然后点击图片产生对应的事件 请问这个能实现吗? 除了QML 还有其他方法吗
左右滑动切换图片就可以用qt动画功能实现,点击图片产生对应的事件可以使用安装控件过滤器方法实现。不需要QML啊,直接qt代码就可以实现。
  • 打赏
  • 举报
回复
这个其实就是qt的动画功能。使用到的类有:QParallelAnimationGroup, QSequentialAnimationGroup,QPropertyAnimation。可以查看qt助手这些类的使用。 图片的每一项是一个label中显示图片,当点击左右按钮时,比如点击右按钮,所有label往右移动一定距离,就组成了移动预览功能。 我这边有相关示例代码,可参考一下: void Guide::SetCapRetAnimation() { QSequentialAnimationGroup *group = new QSequentialAnimationGroup(this); int msec = 2000; int hx = 160, hw = 225, hh = 221; QPropertyAnimation *lhAnima = new QPropertyAnimation(ui->img_label, "geometry"); SetAnimationValue(lhAnima, QRect(hx, 595, hw, hh), QRect(hx, ui->img_label->y(), hw, hh), msec); int sx = 695; QPropertyAnimation *rhAnima = new QPropertyAnimation(ui->star_img_label, "geometry"); SetAnimationValue(rhAnima, QRect(sx, 595, hw, hh), QRect(sx, ui->star_img_label->y(), hw, hh), msec); int lnx = ui->img_name_label->x(), nw = ui->img_name_label->width(), nh = ui->img_name_label->height(); QPropertyAnimation *lnAnima = new QPropertyAnimation(ui->img_name_label, "geometry"); SetAnimationValue(lnAnima, QRect(lnx, 596, nw, nh), QRect(lnx, ui->img_name_label->y(), nw, nh), msec); int rnx = ui->star_name_label->x(); QPropertyAnimation *rnAnima = new QPropertyAnimation(ui->star_name_label, "geometry"); SetAnimationValue(rnAnima, QRect(rnx, 596, nw, nh), QRect(rnx, ui->star_name_label->y(), nw, nh), msec); int vx = 411, vy = 250, vw = 258, vh = 73; QPropertyAnimation *vaAnima = new QPropertyAnimation(ui->vs_label, "geometry"); SetAnimationValue(vaAnima, QRect(vx, 596, vw, vh), QRect(vx, vy, vw, vh), msec); //connect(vaAnima, SIGNAL(valueChanged(const QVariant&)), this, SLOT(AnimaValueChange(const QVariant&))); int tx = 0, ty = 0, tw = 1080, th = 126; QPropertyAnimation *tlAnima = new QPropertyAnimation(ui->titleW, "geometry"); SetAnimationValue(tlAnima, QRect(tx, 596, tw, th), QRect(ui->titleW->x(), ty, tw, th), msec); QParallelAnimationGroup *parGroup = new QParallelAnimationGroup(); parGroup->addAnimation(lhAnima); parGroup->addAnimation(rhAnima); parGroup->addAnimation(lnAnima); parGroup->addAnimation(rnAnima); parGroup->addAnimation(vaAnima); parGroup->addAnimation(tlAnima); group->addAnimation(parGroup); group->start(QAbstractAnimation::DeleteWhenStopped); } void Guide::SetAnimationValue(QPropertyAnimation *animation, const QVariant &startval, const QVariant &endval, int msec) { animation->setDuration(msec); animation->setStartValue(startval); animation->setEndValue(endval); animation->setEasingCurve(QEasingCurve::InOutBounce); } 其实好简单,调用qt动画相关类的接口即可。复杂的工作是要算出每一步动画,比如滑动是要从哪里运动到哪里,这样设置初始位置和结束位置即可。
  • 打赏
  • 举报
回复
谢谢你的回复,在QT上想做这个效果了,是左右滑动切换图片,然后点击图片产生对应的事件 请问这个能实现吗? 除了QML 还有其他方法吗
xqhrs232 2017-08-17
  • 打赏
  • 举报
回复
这个应该要3D实现吧!叫什么coverflow效果!

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧