6

假设我有 2 个QTimer对象,它们的间隔为10、20。并假设我想使用计时器 1信号和计时器 2 运行。所以and的运行顺序是这样的: slot1()timeoutslot2slot1slot2

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

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

4

1 回答 1

9

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

timer.setTimerType(Qt::PreciseTimer);

默认值Qt::CoarseTimer 会导致精度在所需间隔的 5% 以内。

关于你的情况,如果你想打电话slot2并且slot1为了你可以在连接到间隔为 10 的计时器的插槽中调用它们:

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

    count++;
}
于 2014-06-19T06:07:18.247 回答