QTimer的替代方案是什么?

QTimer的替代方案是什么?,qt,qtimer,Qt,Qtimer,插槽函数的间隔为毫秒: 以毫秒的超时间隔启动或重新启动计时器 但是msec是int类型,不能占用很长的时间间隔。除了可能需要很长时间间隔的QTimer,还有什么替代方法 在这种情况下,您可以使用诸如连接到函数的小时计时器或lambda之类的东西来对照目标检查当前时间点 /* * We want to trigger some event one year from now. */ auto endpoint = QDateTime::now().addYears(1); QTimer hou

插槽函数的间隔为毫秒:

以毫秒的超时间隔启动或重新启动计时器


但是msec是
int
类型,不能占用很长的时间间隔。除了可能需要很长时间间隔的
QTimer
,还有什么替代方法

在这种情况下,您可以使用诸如连接到函数的小时计时器或lambda之类的东西来对照目标检查当前时间点

/*
 * We want to trigger some event one year from now.
 */
auto endpoint = QDateTime::now().addYears(1);
QTimer hourly_timer;
QObject::connect(&hourly_timer, &QTimer::timeout,
                 [endpoint]()
                   {
                     if (QDateTime::now() >= endpoint) {

                       /*
                        * Target time reached.  Do whatever...
                        */
                     }
                   });
hourly_timer.start(3600 * 1000);

你需要多长时间休息?通常,
int
将是一个32位整数,可以表示大约20亿毫秒——这超过了20天。@G.M.我需要一年的时间。谢谢,但它看起来像是一个非常糟糕的代码。他们做的正是我想要的。但是boost.asio.Timer需要另一个我不喜欢的事件循环。我能问一下它“真正糟糕”的地方是什么吗?在计时器上更新超时代码(无论是每小时更新一次,还是第二次更新)是相当标准的东西。此外,暂停1年似乎有些奇怪/乐观。它运行的平台真的有那么长的正常运行时间吗?即使是高可用性系统在一年中也会有几秒钟的停机时间。@GM,我用QTimer实现调度器的程序,按照您向我建议的方式可能会非常复杂。好吧,这很公平,但是。。。在某种程度上,这确实是一个xy问题。您可能希望编辑您的问题,以澄清您试图解决的真正问题——调度程序的问题。