Files
qt-courseware/Projects/02_ClassroomTimer/countdown.h
T
2026-11-06 01:04:35 +08:00

24 lines
689 B
C++

#pragma once
#include <QtGlobal>
// 界面负责取得当前时间,模型只负责计算;测试可传入确定的毫秒数。
class Countdown {
public:
enum class State { Ready, Running, Paused, Finished };
explicit Countdown(qint64 durationMs = 300000);
bool setDuration(qint64 durationMs);
void start(qint64 nowMs);
void pause(qint64 nowMs);
void reset();
void update(qint64 nowMs);
qint64 remaining(qint64 nowMs) const;
qint64 duration() const { return m_duration; }
State state() const { return m_state; }
private:
qint64 m_duration;
qint64 m_remainingAtStart;
qint64 m_segmentStarted = 0;
State m_state = State::Ready;
};