• 9586阅读
  • 8回复

[提问]QAction 能否实现动画 高手请进 [复制链接]

上一主题 下一主题
离线xuxb
 
只看楼主 倒序阅读 楼主  发表于: 2012-11-06
关键词: QAction动画
我现在想写一个代码,当鼠标放到QAction 上 这个QAction 就上下跳动  


如何实现动画
下面是这个代码:
void MainWindow::actionJump(){  QRect nRect1 = fileToolBar->actionGeometry(openAction);  QPoint nPoint = nRect1.center();//获得QAction(openAction)矩形的圆点  QPoint nPoint2 = nPoint;  nPoint2.setY(nPoint.y()-10);//向上移动10像素  QPropertyAnimation *up_down_action = new QPropertyAnimation(openAction, "pos");  up_down_action->setDuration(3000);  up_down_action->setStartValue(nPoint);//起始位置  up_down_action->setEndValue(nPoint2);//结束位置  up_down_action->setEasingCurve(QEasingCurve::CosineCurve);  QSequentialAnimationGroup group;  group.addAnimation(up_down_action);  group.start();}
承接C/C++ MFC Qt  网络通信等项目!!!
离线xuxb
只看该作者 1楼 发表于: 2012-11-06
重贴下代码
void MainWindow::actionJump()
{
  QRect nRect1 = fileToolBar->actionGeometry(openAction);
  QPoint nPoint = nRect1.center();//获得QAction(openAction)矩形的圆点
  QPoint nPoint2 = nPoint;
  nPoint2.setY(nPoint.y()-10);//向上移动10像素
  QPropertyAnimation *up_down_action = new QPropertyAnimation(openAction, "pos");
  up_down_action->setDuration(3000);
  up_down_action->setStartValue(nPoint);//起始位置
  up_down_action->setEndValue(nPoint2);//终止位置
  up_down_action->setEasingCurve(QEasingCurve::CosineCurve);
  QSequentialAnimationGroup group;
  group.addAnimation(up_down_action);
  group.start();
}
承接C/C++ MFC Qt  网络通信等项目!!!
离线roywillow

只看该作者 2楼 发表于: 2012-11-06
你的意思是说这段代码不工作?
你处理鼠标移动到按钮上的事件了吗?
我感觉直接改变pos不是个好办法,我想tool bar的layout肯定会接管按钮位置的控制的,改变pos估计行不通
有没有考虑过直接修改图标图片来实现?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线xuxb
只看该作者 3楼 发表于: 2012-11-06
鼠标hovered事件我已经处理了,就是上面那个函数,上面那个函数是槽,已经能正确进入,
但是我不知道为什么这段代码没有起作用!!难道QAction不支持动画
承接C/C++ MFC Qt  网络通信等项目!!!
离线xuxb
只看该作者 4楼 发表于: 2012-11-06
修改图片??怎么做难道要我做n张不同角度的图片,然后替换吗??
承接C/C++ MFC Qt  网络通信等项目!!!
离线xuxb
只看该作者 5楼 发表于: 2012-11-07
顶一下!!
承接C/C++ MFC Qt  网络通信等项目!!!
离线xuxb
只看该作者 6楼 发表于: 2012-11-07
当执行这段代码的时候出现这提示
QPropertyAnimation: you're trying to animate a non-existing property pos of your QObject

我以为是QAction不支持 点的移动 那么我改成 geometry 同样出新这种提示
QPropertyAnimation: you're trying to animate a non-existing property geometry of your QObject

所以我肯定了 QAction不支持动画效果!!虽然QAction是QObject的子类 但是也不支持
承接C/C++ MFC Qt  网络通信等项目!!!
离线roywillow

只看该作者 7楼 发表于: 2012-11-07
QAction不是QWidget所以应该不会有pos或者geometry属性的
你可以用QToolButton试试?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线xuxb
只看该作者 8楼 发表于: 2012-11-08
QPropertyAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = 0);
这是构造函数,第一个参数是QObject类型,然而QAction也是集成QObject类型,所以我觉得Qt SDK也存在bug啊!!这样是解释不通的
承接C/C++ MFC Qt  网络通信等项目!!!
快速回复
限100 字节
 
上一个 下一个