gpt4 book ai didi

c++ - Qt 4.8.5中QTimeLine中setPaused(true)后setPaused(false)和resume()的区别

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:21 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com