假设我有2个QTimer对象,它们的为10、20 作为其间隔。并假设我想使用计时器1的slot1()信号和计时器2的timeout来运行slot2。因此slot1slot2的运行顺序如下所示:

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

我想知道20毫秒后首先执行slot1slot2中的哪一个?以及如何强制事件循环在重叠时先运行slot2,然后再运行slot1。(slot2对我而言,按时运行更重要)

最佳答案

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

timer.setTimerType(Qt::PreciseTimer);

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

关于您的情况,如果要依次调用slot2slot1,可以在连接到定时器的插槽中以10的间隔调用它们:
void myClass::onTriggered()
{
    if(count % 2==0)
        slot2();
    slot1();

    count++;
}

07-25 20:31