Вы можете добавить функции обратного вызова в виде boost :: function в структуру данных, такую как список или вектор.
Однако, если у вас есть синхронизированные задачи и вы хотите, чтобы эти задачи повторялись через определенные интервалы, вы можете просто сохранить список QTimer
QList<QTimer> timed_tasks;
В вашей настройке вы подключите правильный таймер к правильным функциям слота.Затем запустите цикл обработки событий Qt.
Если вы используете очень трудную программу сбора (т.е. много длинных задач, но должны выполняться в режиме реального времени), у вас должны быть функции слотов в отдельных потоках.Таким образом, ваш главный цикл обработки событий все еще может работать (и запускать задачи).В противном случае задачи, которые занимают слишком много времени, будут вызывать голодание других задач, поскольку цикл обработки событий не возвращается вовремя, чтобы запустить другие задачи.
Вы также можете реализовать эти задачи с помощью QRunnable и предоставить QThreadPool, который будетзапустить их.Я предлагаю вам проверить http://doc.qt.io/archives/4.6/threads.html, если вы идете по этому пути.
ОБНОВЛЕНИЕ: Решение, предлагаемое выше, будет работать с несколькими таймерами, которые срабатывают одновременно.Чтобы дать пользователю контроль над тем, какой таймер срабатывать (т.е. какое значение собирать), вы можете использовать QObject :: killTimer и QObject :: startTimer.Это не требует дополнительного места для хранения битовых таблиц или какого-либо другого механизма для хранения таймера, который активен в данный момент.