• 15228阅读
  • 19回复

请教,如何QT的动画界面实现? [复制链接]

上一主题 下一主题
离线acheng210
 
只看楼主 倒序阅读 楼主  发表于: 2007-01-17
RT,我希望实现一种动画的widget风格,即:类似于魔兽的选择画面一样,如果一个窗口弹出来,不是干巴巴的show出来,而是,比如有一个从左到右,或则从上到下的一个动画,就好象我们翻书一样的动作,请问这个QT能实现吗?如果能,怎么实现呢?望指教!!!我现在一点头绪都没有~~~
另:是否需要OpenGL的支持?
[ 此贴被XChinux在2007-01-22 00:01重新编辑 ]
离线wangowen

只看该作者 1楼 发表于: 2007-01-17
QSplashScreen看文档
离线acheng210
只看该作者 2楼 发表于: 2007-01-17
QSplashScreen的说明:
Detailed Description
The QSplashScreen widget provides a splash screen that can be shown during application startup.
A splash screen is a widget that is usually displayed when an application is being started. Splash screens are often used for applications that have long start up times (e.g. database or networking applications that take time to establish connections) to provide the user with feedback that the application is loading.
The splash screen appears centered on the screen. It may be useful to add the WStyle_StaysOnTop if you desire to keep above all the windows in the GUI.
Some X11 window managers do not support the "stays on top" flag. A solution is to set up a timer that periodically calls raise() on the splash screen to simulate the "stays on top" effect.
The most common usage is to show a splash screen before the main widget is displayed on the screen. This is illustrated in the following code snippet.

首先感谢回复!!
从这个的说明来看,主要是一个在main widget show 出来之前,显示一张图片的效果,,,,
我需要的效果是类似与QQ界面一样,电击以后能划出来...
感觉好想不能用QSplashScreen实现...如果能,望详细指点!!!非常感谢回复!!!
离线wangcheng
只看该作者 3楼 发表于: 2007-01-17
gif 可以用QMovie
离线acheng210
只看该作者 4楼 发表于: 2007-01-17
gif 的QMovie主要使用来show pics的,而我希望的是我的Widget也能以这种动画的效果划出来,而且我的是在嵌入式里面来用的,所以想问一下QT有没有支持这样的class...
另外,请问,Windows下是怎么实现类似与QQ划出界面的效果的?是不断的循环paint wiget出来的吗?
离线acheng210
只看该作者 5楼 发表于: 2007-01-17
我做了一个简单的尝试:
HWWidget::HWWidget(QWidget * parent, const char *name, WFlags f)
       :    QWidget( parent, name, f)
{
   left = 0;
   top = 160;
   width =240;
   height = 160;
   mPixmap = QPixmap("./bicycle.jpg");
   //setBackground(Noground);
   show();
}

void HWWidget::paintEvent(QPaintEvent * /*e*/)
{
   QPainter p( this);
   static int times = 1;
   static int yoffset = 8;
   {
       setGeometry( 0, 320-times*yoffset, 240,times*yoffset);
       p.drawPixmap(0, 0, mPixmap, 0, 0, -1, -1);    
       times++;
       usleep(500000);
   }
}

这样的效果能出来一点,就是图片bicycle.jpg能动画的划出来,存在三个问题:
  1.是个死循环,可能是因为setGeometry也会引发paint...
  2.只有bicycle.jpg图便能有动画效果,但是widget看不到他的默认的frame...
  3.可能运算太多,arm处理器不能很好的支持
所以,请问,QT有没有好一点的接口,支持整个widget也一起想抽屉一样的划出来,类似与QQ的主界面,从隐藏状态显示出来的时候,是一个划出来的效果..可以从左到右,从上到下,甚至从下到上的划出来...???

  非常感谢您的帮助!!!!
离线acheng210
只看该作者 6楼 发表于: 2007-01-17
在线等~~~~急切希望大家能帮忙~~~呼唤斑竹~~~!!!
离线ecsape
只看该作者 7楼 发表于: 2007-11-14
我也需要这种功能,所以把这个帖子搜出来了,不知道楼主后来解决这个问题没?
离线ecsape
只看该作者 8楼 发表于: 2007-11-14
我研究一下,如果解决了我把代码贴上来。
离线morya

只看该作者 9楼 发表于: 2007-11-14
记得qt有个tutorial 里面有个大炮打子弹。
不知道把子弹的show() hide()换成widget.move()
会不会达到楼主要求的效果。
应该会可以吧
离线hehui

只看该作者 10楼 发表于: 2007-12-12
应该要占不少内存吧!
离线skywalker
只看该作者 11楼 发表于: 2007-12-26
关注中,我也正需要这种效果,正在到处找方法呢!呼唤版主提供点建议:)
离线wangchengju
只看该作者 12楼 发表于: 2008-04-06
我也在关注中,希望大家给点意见!
离线gery_sunjian
只看该作者 13楼 发表于: 2008-04-08
关注中!!  我也需要啊!!!
离线guyansrg

只看该作者 14楼 发表于: 2008-04-09
可以参考一下Qt4的dome源代码
离线xjcook

只看该作者 15楼 发表于: 2008-04-11
qt4的例子管理程序,qtdemo就是你要的效果。
离线netlove

只看该作者 16楼 发表于: 2008-08-12
那在QT2 QT3中怎么实现呢?关键是不能用QT4,这是个麻烦的问题。现在能动态画,却不能画出正确的出现位置,脑袋都大了
离线codespy
只看该作者 17楼 发表于: 2008-08-13
引用第15楼xjcook于2008-04-11 14:10发表的  :
qt4的例子管理程序,qtdemo就是你要的效果。

同意
离线lazybone
只看该作者 18楼 发表于: 2008-08-13
QTJambi
-------------------------------
曾经试过窗体下边拉长,用循环做的,效果一般。
点击按钮后,每隔一段时间,窗体高度增加
离线zmox
只看该作者 19楼 发表于: 2009-09-14
使用QTimeLine
快速回复
限100 字节
 
上一个 下一个