Qt实现屏保

Qt不在嵌入式模式下实现屏保的方法

        所谓屏保就是在没有任何操作到达一定时间后启动的。

       在qt下实现的方法就是给QApplication安装事件过滤器,当然继承QApplication重写notify()函数也是可以的。因为notigy函数是整个应用程序第一时间获取到键盘、鼠标...事件的函数。

       我采用的是安装事件过滤器的方法,因为这样就不要继承QApplication类了。但是需要在一个类中实现eventFilter()函数,然后给QApplication对象安装事件过滤器指定该类即可。

      下面是我的代码:

bool myobject::eventFilter(QObject *ob, QEvent *e)
{
    if(e->type()==QEvent::MouseMove)//  判断如果是鼠标移动事件
    {
        if(!have_dosth)//标志是否有过鼠标操作变量
        {
            have_dosth=true;
        }
        if(have_dosthtimer->isActive())//have_dosthtimer很显然是个定时器,在这判断是否已经开启.
        {
            have_dosthtimer->stop();
            have_dosthtimer->start(1000*30);//如果已经开启,并且有鼠标移动事件就需要计时器重新计算(这里是30s)
            qDebug()<<"have_dosthtimer restart";
        }
    }
    return QObject::eventFilter(ob,e);//其他事件仍然交给系统处理。这句一定不能少。
}

 

/*这个是have_dosthtimer定时器链接的槽函数,如果时间到了发送信号实现屏保功能*/

void myobject::slot_JodjeDosth()  

{
    if(have_dosth)
    {
        have_dosth=false;
        emit signal_have_dosth();
        qDebug()<<"emit signal_have_dosth";
    }
}

       在mian函数中是这样写的:

myobject *object = myobject::getMyObject(); //用的是单实例模式
a.installEventFilter(object);//a是QApplication的实例,给a安装事件过滤器。

 

以上是自己写的解决方法,留作备忘!路过的朋友有好的建议欢迎指正~!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值