假设我有2个QTimer
对象,它们的为10、20 作为其间隔。并假设我想使用计时器1的slot1()
信号和计时器2的timeout
来运行slot2
。因此slot1
和slot2
的运行顺序如下所示:
10ms-----20ms-----------30ms----40ms-----
(slot1) (slot1, slot2) (slot1) (slot1, slot2)...
我想知道20毫秒后首先执行
slot1
和slot2
中的哪一个?以及如何强制事件循环在重叠时先运行slot2
,然后再运行slot1
。(slot2
对我而言,按时运行更重要) 最佳答案
不能保证两个计时器中的插槽以特定顺序调用。这是因为您在不同的时间启动它们,并且QTimer
最多可以通过设置以下内容来毫秒级精度:
timer.setTimerType(Qt::PreciseTimer);
默认值为
Qt::CoarseTimer
,它导致精度在所需间隔的5%之内。关于您的情况,如果要依次调用
slot2
和slot1
,可以在连接到定时器的插槽中以10的间隔调用它们:void myClass::onTriggered()
{
if(count % 2==0)
slot2();
slot1();
count++;
}