【QT】登录时效性(登录后一定的时间内无须再次登录)

需求

为了不用频繁输入密码登录,现在大部分的app或者小程序登录后一定的时间内无须再次登录。本人是在板子上写的程序,不方便截图,所以下面用简单的例子代替。

大致效果

主界面
在这里插入图片描述
点击设置弹出登录界面
在这里插入图片描述
点击返回退回到主界面
在这里插入图片描述
如果再次点击设置不用点击登陆(正常需要输入密码等操作),直接进入设置界面。

思路

主要的软件逻辑如下图:
在这里插入图片描述
首先想到的是:定义一个可以在多个cpp中使用的全局变量用来储存超时时间(sec),在设置界面的cpp中,点击退出按钮启动定时器,sec每秒加一,在主界面的 点击设置按钮槽函数 中判断,如果超时时间(sec)大于0s或小于等于10s,设置界面show(),否则登录界面show()。这样有个问题,就是第一次点击设置界面中的的退出按钮退回到主界面,定时器是正常的,再次点击主界面中的设置按钮到设置界面,然后点击退出,定时器变成了一秒加两次,问题没解决,可能是多次定时器重复启动问题。
之后选择了另一种方法:利用系统时间。同样定义一个全局变量msc,当在设置界面点击退出后,获取当前时间,转化为秒数后,加10赋值给msc作为判断的条件(10为超时10秒即10秒内不用登录)。然后在主界面的cpp文件中,在点击设置按钮的槽函数中,获取当前时间,如果当前时间大于msc,登录界面show(),否则设置界面show()。

主要代码

首先添加全局变量:
def.h

#ifndef DEF_H
#define DEF_H

extern int  OverTime ;
class def
{
public:
    def();
    ~def();
};

#endif // DEF_H

def.cpp

#include "def.h"
int  OverTime = 0;
def::def()
{

}

def::~def()
{

}

然后是设置界面主要代码:
头文件添加def.h

#include "def.h"

cpp文件

//点击退出当前界面
void FaceID::on_ExitButton_clicked()
{
    QTime t=QTime::currentTime();
    int startSec = QDateTime::currentDateTime().toTime_t();
    OverTime = startSec + 10;  //设置超时时间
    this->close();
}

主界面:
.h文件

#include "faceid.h"
#include "login.h"
#include "def.h"

  FaceID                  faceid; //设置界面
  Login                   login;  //登录界面

.cpp

//点击弹出设置界面或登录界面
void MianWindow::on_SettingButton_clicked()
{
    int currentSec = QDateTime::currentDateTime().toTime_t();
    if(currentSec > OverTime)
    {
        login.show();
    }
    else
    {
        faceid.show();
    }
}

总结

没有搜到关于此类型的qt例子,所以自己写了个,而且我的表述可能不是太清楚,不明白的可以在评论中问我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值