首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPropertyAnimation在使用QParallelAnimationGroup时会自动删除?

QPropertyAnimation在使用QParallelAnimationGroup时会自动删除?
EN

Stack Overflow用户
提问于 2017-10-19 20:25:07
回答 1查看 1.1K关注 0票数 3

基于下面的代码片段,我对QPropertyAnimationQParallelAnimationGroup有一个疑问

代码语言:javascript
复制
// Create the opacity animation
QPropertyAnimation *animation1 = new QPropertyAnimation(notification, "windowOpacity");
animation1->setDuration(animationDuration);
animation1->setStartValue(startOpacity);
animation1->setEndValue(endOpacity);
animation1->setEasingCurve(QEasingCurve::InBack);

// Create the position animation
QPropertyAnimation *animation2 = new QPropertyAnimation(notification, "pos");
animation2->setDuration(animationDuration);
animation2->setStartValue(startPos);
animation2->setEndValue(endPos);

// Create the animation group
QParallelAnimationGroup *group = new QParallelAnimationGroup;
group->addAnimation(animation1);
group->addAnimation(animation2);
group->start(QAbstractAnimation::DeleteWhenStopped);

connect(group, SIGNAL(finished()), group, SLOT(deleteLater()), Qt::UniqueConnection);
  1. 关于QAbstractAnimation::DeleteWhenStopped常数,Qt文档说:

停止时,动画将自动删除。

这是否意味着指针(animation1animation2)将被自动删除?或者我仍然需要“手动”删除它们(可能使用像下面这样的信号和插槽)?

代码语言:javascript
复制
connect(animation1, SIGNAL(finished()), animation1, SLOT(deleteLater()), Qt::UniqueConnection);
connect(animation2, SIGNAL(finished()), animation2, SLOT(deleteLater()), Qt::UniqueConnection);

我用的是QT5.3。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-19 21:33:56

是的,两者都被摧毁了。

代码语言:javascript
复制
animation1->setProperty("nameObj", "animation1");
animation2->setProperty("nameObj", "animation2");
group->setProperty("nameObj", "group");

connect(animation1, SIGNAL(destroyed(QObject*)), this, SLOT(OnAnimationDestroyed(QObject*)));
connect(animation2, SIGNAL(destroyed(QObject*)), this, SLOT(OnAnimationDestroyed(QObject*)));
connect(group, SIGNAL(destroyed(QObject*)), this, SLOT(OnAnimationDestroyed(QObject*)));

group->start(QAbstractAnimation::DeleteWhenStopped);

void MyObj::OnAnimationDestroyed(QObject* obj)
{
    qDebug() << "Destroyed: " << obj->property("nameObj").toString();
}

结果是:

代码语言:javascript
复制
Destroyed:  "group"

Destroyed:  "animation1"

Destroyed:  "animation2"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46838336

复制
相关文章

相似问题

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