在一个界面中,要实现一个对鼠标或键盘事件的检测,长时间未操作,则退出登录
考虑对QApplication安装事件过滤器,然后登录按钮控件去判断是否需要退出登录。
首先继承QObject写一个事件过滤类
class myObject:public QObject
{
Q_OBJECT //使用信号槽
public:
//把按钮控件实例指针传进来
myObject(QWidget* wgt){
connect(this,SIGNAL(active_singal(time_t)),wgt,SLOT(onActive_slot(time_t)));
}
signals:
void active_singal(time_t);
protected:
bool eventFilter (QObject *obj, QEvent *event) //重新实现此虚函数
{
switch (event->type())
{
case QEvent::MouseButtonPress:
case QEvent::MouseButtonRelease:
case QEvent::MouseButtonDblClick:
case QEvent::KeyPress:
case QEvent::KeyRelease:
case QEvent::Wheel:
case QEvent::MouseMove:
case QEvent::WindowActivate:
{
emit active_singal(time(NULL));//通知按钮控件,有事件发生
break;
}
default:
return false;
}
return false;
}
};
在main函数注册事件过滤器
QApplication a(argc, argv);
MainWnd w;//界面类
myObject obj(w.pMenuWgt);//w.pMenuWgt把界面类里面的按钮成员传进去
a.installEventFilter(&obj);
w.show();
return a.exec();