Что произойдет, если у меня несколько перекрывающихся QTimer

Предположим, у меня есть 2 QTimer объекты с 10, 20 как их интервалы. И предположим, я хочу бежать slot1() с таймером 1 timeout сигнал и slot2 с таймером 2. Так работает порядок slot1 а также slot2 это что-то вроде этого:

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

Я хочу знать через 20 миллисекунд, какой из slot1 & slot2 выполняет сначала? и как я могу заставить цикл событий работать slot2 а потом slot1 когда они перекрываются. (slot2 мне важнее бежать вовремя)

6

Решение

Нет гарантии, что слоты в двух таймерах будут вызываться с конкретными заказами. Это потому, что вы запускаете их в разное время, а также QTimer в лучшем случае имеет точность в миллисекунды, установив это:

timer.setTimerType(Qt::PreciseTimer);

По умолчанию Qt::CoarseTimer что обеспечивает точность в пределах 5% от желаемого интервала.

О вашем случае, если вы хотите позвонить slot2 а также slot1 чтобы вы могли вызвать их в слоте, подключенном к таймеру с интервалом 10:

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

count++;
}
9

Другие решения


По вопросам рекламы [email protected]