- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
qtimeline.cpp源码中的setPaused(false)和resume()几乎是一样的:
d->timerId = startTimer(d->updateInterval);
d->startTime = d->currentTime;
d->timer.start();
d->setState(Running);
在文档中,setPaused(false) 恢复时间线并从它离开的地方继续,但是 resume() 从当前时间恢复时间线。
谁能解释“相同”代码的不同结果?
我阅读了已解决的主题 http://qt-project.org/forums/viewthread/28076 “QTimeLine setPaused 没有正确暂停时间线”。但我仍然找不到原因。
最佳答案
resume ()
之间的预期区别和 setPaused (false)
以下是:
resume
将无条件改变QTimeLine
的状态至 Running
,无论它之前的状态是什么,而;
setPaused(false)
除非当前状态为 Paused
,否则不会执行任何操作.
执行setPaused
检查状态是否确实是Paused
在运行问题中的代码之前,这就是为什么“相同的代码”会产生不同的结果。
以下是resume
的全文, 但只是 setPaused
定义的一小部分(错误修复后)。
d->timerId = startTimer(d->updateInterval);
d->startTime = d->currentTime;
d->timer.start();
d->setState(Running);
setPaused (x)
的先前(错误)实现在 state == Paused
的分支中有以下内容, 和 x == false
:
d->timerId = startTimer(d->updateInterval);
d->setState(Running);
您正在谈论的错误修复可以在以下链接下详细检查:
关于c++ - Qt 4.8.5中QTimeLine中setPaused(true)后setPaused(false)和resume()的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24098685/
我有一个QGraphicsItem,我想为它制作尺寸变化的动画。因此,我需要随时间改变对象的 height 和 width。我过去曾将 QTimeLine 用于单变量动画,如果可能的话,我想在这里将其
我正在使用 QTimeLine 使播放器在屏幕上移动,以在指定时间内处理动画/移动。 在我的播放器构造函数中: timeLine = new QTimeLine(500); timeLine->set
我正在使用 QGraphics 对象来显示它们之间带有箭头的框。我想要那些从一端开始到另一端的箭头/线的动画。 当箭头的开始和结束位置在 QTimeLine 执行期间没有改变时动画效果很好,即我让 V
正如问题中所述,当我尝试使用 QGraphicsItemAnimation 的 setPosAt() 函数简单地对圆进行动画处理时,我在终端中收到此警告消息,并且我对此警告的起源感到非常困惑。我的代码
我是一名优秀的程序员,十分优秀!