首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于QPropertyAnimation,新实例或实例之间有什么区别?

关于QPropertyAnimation,新实例或实例之间有什么区别?
EN

Stack Overflow用户
提问于 2012-02-12 04:57:59
回答 2查看 331关注 0票数 1

代码如下所示并没有创建动画..。但是如果QPropertyAnimation是一个新实例,那么它可以..。为什么?有什么不同吗?谢谢.

代码语言:javascript
复制
        QRect orgRect = this->geometry();
        QRect endRect = btExpand ? QRect(*ptNotePadPot, COLLAPSE_SIZE) : 
                                   QRect(*ptNotePadPot, EXPAND_SIZE);
     /*
        QPropertyAnimation* amt = new QPropertyAnimation(this, "geometry", this);
        amt->setDuration(10000);
        amt->setStartValue(orgRect);
        amt->setEndValue(endRect);
        amt->start();
    */
        QPropertyAnimation amt(this, "geometry", this);
        amt.setDuration(10000);
        amt.setStartValue(orgRect);
        amt.setEndValue(endRect);
        amt.start();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-12 05:08:44

启动后,QProperyAnimation将创建自己的计时器,并在主线程之外运行。

代码语言:javascript
复制
QPropertyAnimation amt(this, "geometry", this);

在运行指针退出功能范围后,它将被销毁。

否则如果你用

代码语言:javascript
复制
QPropertyAnimation* amt = new QPropertyAnimation(this, "geometry", this);

您将在内存中创建一个要工作的动画对象,并由amt指针指向它。在运行指针退出函数范围后,指针将被删除,而不是QPropertyAnimation对象。

但是如果你不删除它,它就会成为记忆中的僵尸。

最好的方法是为QPropertyAnimation指针使用一个类变量。因此,您可以删除指针中的对象后,程序关闭或任何时候,你想。

希望能帮上忙..。因为我糟糕的英语。

票数 2
EN

Stack Overflow用户

发布于 2013-10-31 16:51:27

解决这个问题的一个更好的方法是调用start()方法,如下所示:

代码语言:javascript
复制
animation->start(QAbstractAnimation::DeleteWhenStopped);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9246548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档