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

时间:2014-06-19 05:43:31

标签: c++ qt overlapping qtimer

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

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

我想在20毫秒之后知道slot1& slot2首先执行?以及如何强制事件循环在重叠时运行slot2然后slot1。(slot2对我来说更重要的是按时运行)

1 个答案:

答案 0 :(得分:9)

无法保证两个计时器中的插槽可以使用特定订单进行调用。这是因为你是在不同的时间开始它们而且QTimer最多只有毫秒准确度通过设置:

timer.setTimerType(Qt::PreciseTimer);

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

关于您的情况,如果您想拨打slot2slot1,可以在连接到间隔为10的计时器的插槽中拨打电话:

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

    count++;
}