Используйте QTimer
для части синхронизации.
Для "скринсейвера" создайте таймер одиночного снимка, подключите его к собственному слоту и установите интервал в две минуты.
activeTimer = new QTimer(this);
activeTimer->setInterval(2*60*1000);
activeTimer->setSingleShot(true);
connect(activeTimer, SIGNAL(timeout()), this, SLOT(activateAutoClick()));
activeTimer->start();
В этом пользовательском слоте запустите второй, не одиночный таймер, подключенный ко второму пользовательскому слоту
void YourThing::activateAutoClick() {
autoTimer->setInterval(5*1000);
autoTimer->setSingleShot(false);
connect(autoTimer, SIGNAL(timeout()), this, SLOT(autoClick()));
autoTimer->start();
}
И делайте все, что хотите, в отношении отправки сигналов на ваш порт в autoClick
.
Чтобы отменить любой таймер, просто вызовите их stop()
метод / слот.
Чтобы реализовать поведение «заставки», создайте функцию, которая:
- Звонки
autoTimer->stop()
для отключения автоматических кликов
- Позволяет
activeTimerr->start(2*60*1000)
перезапустить тот
И вызывайте эту функцию всякий раз, когда это необходимо. Вы можете сделать это из уже существующих слотов для ваших кнопок или переопределить обработчики событий, такие как QWidget
s mouseMoveEvent
, keyPressedEvent
и подобные. (Обязательно прочитайте документацию по обработчикам, некоторые требуют специальной подготовки.)