QT Event Проблема - PullRequest
       3

QT Event Проблема

1 голос
/ 11 августа 2011

Я пишу программу на qt и имею следующее требование:

Когда прошло 30 секунд без щелчка, заблокируйте экран.Если кто-то щелкнет снова через эти 30 секунд, перенаправьте его на экран входа в систему.

Я прочитал документ qt о событии и считаю, что мне нужен либо метод 1, либо 2 для обработки события мыши.

1.Установка фильтра событий в qApp Фильтр событий в qApp отслеживает все события, отправленные всем объектам в приложении.

2. Повторная реализация QApplication :: notify ().Цикл событий Qt и sendEvent () вызывают эту функцию для отправки событий.Реализовав его, вы сможете увидеть события раньше всех.

Они также кажутся мне мощными, но я не понимаю их разницы.Какой из них соответствует моему требованию?Спасибо.

1 Ответ

2 голосов
/ 11 августа 2011

Вы можете добиться того же самого с любым решением, за исключением того факта, что QApplication :: notify (или его переопределение) будет вызываться перед любым фильтром событий, который может быть в вашем приложении.

Поскольку первый подход не требует создания подкласса QApplication, он обычно является предпочтительным. Единственная причина переопределения QApplication :: notify в вашем случае будет в том случае, если вам необходимо переопределить его по каким-либо другим причинам, например, потому что вам нужночтобы делать что-либо, связанное с вашими собственными событиями.

Но, учитывая ваши требования, я лично выбрал бы следующее решение:

  1. Установите фильтр событий на qApp
  2. Создайте таймер с интервалом 30 секунд
  3. Подключите таймер к методу блокировки экрана
  4. Фильтр событий сбрасывает таймер при каждом обнаружении нажатия мыши.

В зависимости от вашего приложения вы также можете искать события KeyPress и, возможно, события MouseMove..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...