Так как никто, кажется, не знает, и я не уверен, что это вообще возможно, я решил установить таймер опроса с малым интервалом, чтобы проверить текущие значения X, Y мыши. Я знаю, что это не идеальное решение, но ...
- Он будет работать кроссплатформенно, и я не буду делать специфические для платформы вещи (например, импорт DLL, гадость)
- Это служит той цели, в которой я нуждаюсь: для определения, активно ли кто-то использует систему или нет
Да, да, я знаю, что могут быть ситуации, когда у кого-то может не быть мыши или чего-то еще. Сейчас я называю это «состоянием низкой активности». Достаточно хорошо. Вот код:
mainwindow.h - Объявление класса
private:
QPoint mouseLastPos;
QTimer *mouseTimer;
quint32 mouseIdleSeconds;
mainwindow.cpp - Метод конструктора
//Init
mouseTimer = new QTimer();
mouseLastPos = QCursor::pos();
mouseIdleSeconds = 0;
//Connect and Start
connect(mouseTimer, SIGNAL(timeout()), this, SLOT(mouseTimerTick()));
mouseTimer->start(1000);
mainwindow.cpp - Тело класса
void MainWindow::mouseTimerTick()
{
QPoint point = QCursor::pos();
if(point != mouseLastPos)
mouseIdleSeconds = 0;
else
mouseIdleSeconds++;
mouseLastPos = point;
//Here you could determine whatever to do
//with the total number of idle seconds.
}