在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没有正确暂停时间线"。但我仍然无法找出原因。
答案 0 :(得分:4)
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);
您正在讨论的错误修复可以在以下链接中详细检查: