如果我有几个重叠的QTimer,会发生什么

What happens if I have several overlapping QTimer

本文关键字:什么 QTimer 有几个 重叠 如果      更新时间:2023-10-16

假设我有两个QTimer对象,它们的10,20间隔。假设我想用定时器1 timeout信号运行slot1(),用定时器2运行slot2。所以slot1slot2的运行顺序是这样的:

10ms-----20ms-----------30ms----40ms-----  
(slot1) (slot1, slot2) (slot1) (slot1, slot2)...  

我想知道20毫秒后CCD_ 7&slot2首先执行?以及当CCD_ 9和CCD_。(slot2对我来说更重要的是按时运行(

不能保证两个定时器中的插槽会按照特定的顺序调用。这是因为您在不同的时间启动它们,而且QTimer通过设置以下内容最多具有毫秒精度:

timer.setTimerType(Qt::PreciseTimer);

默认值为Qt::CoarseTimer,它使精度在所需间隔的5%以内。

关于您的案例,如果您想按顺序呼叫slot2slot1,您可以在连接到计时器的插槽中呼叫它们,间隔为10:

void myClass::onTriggered()
{
    if(count % 2==0)
        slot2();
    slot1();
    count++;
}