0

所以我试图在已添加到 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 函数

4

1 回答 1

0

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

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

于 2013-02-15T21:33:18.937 回答