Вы можете добиться того же самого с любым решением, за исключением того факта, что QApplication :: notify (или его переопределение) будет вызываться перед любым фильтром событий, который может быть в вашем приложении.
Поскольку первый подход не требует создания подкласса QApplication, он обычно является предпочтительным. Единственная причина переопределения QApplication :: notify в вашем случае будет в том случае, если вам необходимо переопределить его по каким-либо другим причинам, например, потому что вам нужночтобы делать что-либо, связанное с вашими собственными событиями.
Но, учитывая ваши требования, я лично выбрал бы следующее решение:
- Установите фильтр событий на qApp
- Создайте таймер с интервалом 30 секунд
- Подключите таймер к методу блокировки экрана
- Фильтр событий сбрасывает таймер при каждом обнаружении нажатия мыши.
В зависимости от вашего приложения вы также можете искать события KeyPress и, возможно, события MouseMove..