- All (478)
- jom (0)
- Qt Linguist (7)
- Qt Eclipse Integration (9)
- Qt Designer (7)
- Qt Creator (4)
- Qt build system: qmake (31)
- Qt build system: configure (3)
- Qt Assistant (5)
- Printing (4)
- Porting from Qt 3 to Qt 4 (1)
- Plugins (7)
- Qt Visual Studio AddIn (2)
- Qt/MFC Migration (2)
- QtScript (3)
- MDI (2)
- XML (1)
- Widgets (22)
- WebKit (5)
- Tools and Containers (2)
- Threads (2)
- Text Handling (10)
- SQL (6)
- QtTest (1)
- QtService (1)
- Platform: Windows (49)
- Platform: Unix (16)
- Platform: Mac OS X (18)
- Image Formats (2)
- I/O (2)
- Graphicsview (8)
- Font handling (9)
- Event System (18)
- Drag and Drop (4)
- Dialogs (6)
- Desktop integration (3)
- ActiveQt (3)
- Itemviews (60)
- Layout (4)
- Qt Quick (10)
- Qt SDK (1)
- Licensing (2)
- Platform: Embedded Linux (38)
- Painting (32)
- OpenGL (4)
- Object Model (6)
- Network (5)
- Multimedia (3)
- Miscellanous (23)
- Main Window (19)
- Look and Feel (23)
- Development (0)
- Getting Involved (0)
- Routines (0)
How can I detect a period of no user interaction?
What you will need to do is use a QTimer [doc.qt.nokia.com] that times out after a number of minutes of no user interaction. Whenever there is user interaction, then you restart the timer. The easiest way to detect any user interaction within an application i.e. mouse clicks(any button), mouse wheel and keystrokes is to install an event filter on the application that listens for these kind of events. For example:
- #include <QtGui>
- {
- Q_OBJECT
- public:
- Widget()
- {
- timer->start(4000);
- installEventFilter(this);
- connect(timer, SIGNAL(timeout()), this, SLOT(testSlot()));
- }
- {
- switch(evt->type()) {
- timer->start(6000);
- break;
- default:
- break;
- }
- return false;
- }
- private:
- public slots:
- void testSlot()
- {
- qDebug() << "No user interaction";
- }
- };
- #include "main.moc"
- int main(int argc, char **argv)
- {
- Widget box;
- box.resize(100, 200);
- box.show();
- return app.exec();
- }

1 comment
December 5, 2010
Lab Rat
By the way you can use evt->type() & rather than a switch. But I guess that might be up to preference.