【问题标题】:Animating QWidgets in a QGraphicsScene在 QGraphicsScene 中为 QWidget 设置动画
【发布时间】:2013-01-31 20:20:44
【问题描述】:

所以我试图在已添加到 QGraphicsScene 的 QWidget 上使用 QPropertyAnimation 并且它不起作用。我不能真正复制和粘贴代码,因为它与一个有点复杂的系统交织在一起,但总结基本上是这样的:

创建了一个自定义小部件
CustomWidget widget;

小部件被添加到图形场景中
graphicsScene,addWidget(widget);

稍后,小部件的成员函数之一尝试创建并启动 QPropertyAnimation

QPropertyAnimation *anim = new QPropertyAnimation(this, "_opacity");

anim->setDuration(5000);
anim->setKeyValueAt(0, 0);
anim->setKeyValueAt(1, 1);

anim->start();

属性更改为第二个值并保持在那里,而不是平滑的动画。

我在网上查看了一些相关问题及其解决方案,但似乎没有一个符合我的情况。有谁知道如何做到这一点?

编辑:我发现我只需要为 _opacity 调用 update() 制作 WRITE 函数

【问题讨论】:

    标签: qt animation qwidget qgraphicsscene


    【解决方案1】:

    我猜你是在堆栈而不是堆上分配 QPropertyAnimation 和朋友。 请注意,QPropertyAnimation 对象将在作用域结束时销毁,因此以后不会更改任何属性。

    您很可能希望在堆上创建该对象。另见示例:http://doc.qt.digia.com/4.7/qpropertyanimation.html

    【讨论】:

    • 谢谢,我正在举一些例子,它只是做了堆栈上的所有事情。但是,现在动画在我单击之前什么都不做,此时它会进入结束状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2012-09-23
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多