当前位置: 首页 > news >正文

Qt之登录界面(splash)

在上一篇多文档窗口设计(MDI)的基础上增加了一个登录界面(splash).

该模块可以扩展为常规的软件登录界面。

界面展示如下

如果用户名和密码输入正确,则调到MDI界面,如果用户名和密码一共输入三次以上,则程序强制退出。

保存用户名的作用是,将本次输入正确的用户名和密码保存到注册表(注意注册表里不能直接放铭文密码),下次启动该软件会自动填写用户名。

注册表中保存的数据如下,密码是经过MD5加密过后的。

界面设置如下

编辑框密码隐形显示需要设置

程序结果如下:

主程序main

#include "mainwindow.h"#include <QApplication>
#include"tlogindialog.h"
int main(int argc, char *argv[])
{QApplication a(argc, argv);TLoginDialog *dlgLogin=new TLoginDialog();dlgLogin->resize(640,480);if(dlgLogin->exec()==QDialog::Accepted){MainWindow w;w.show();return a.exec();}elsereturn 0;}

tlogindialog.h和tlogindialog.cpp如下

#ifndef TLOGINDIALOG_H
#define TLOGINDIALOG_H#include <QDialog>namespace Ui {
class TLoginDialog;
}class TLoginDialog : public QDialog
{Q_OBJECTpublic:explicit TLoginDialog(QWidget *parent = nullptr);~TLoginDialog();private:Ui::TLoginDialog *ui;bool m_moving=false;QPoint m_lastPos;QString m_user="user";QString m_pwd="12345";int m_tryCount=0;const int M_MAXCOUT=3;void readSettings();void writeSettings();QString encrypt(const QString &str);// QWidget interface
protected:virtual void mousePressEvent(QMouseEvent *event) override;virtual void mouseReleaseEvent(QMouseEvent *event) override;virtual void mouseMoveEvent(QMouseEvent *event) override;
private slots:void on_btnOk_clicked();
};#endif // TLOGINDIALOG_H
/************************************************.cpp***************************/
#include "tlogindialog.h"
#include "ui_tlogindialog.h"
#include<QMouseEvent>
#include<QCryptographicHash>
#include<QSettings>
#include<QMessageBox>
TLoginDialog::TLoginDialog(QWidget *parent): QDialog(parent), ui(new Ui::TLoginDialog)
{ui->setupUi(this);setAttribute(Qt::WA_DeleteOnClose);setWindowFlag(Qt::SplashScreen);QApplication::setOrganizationName("Sun Company");QApplication::setApplicationName("MDI_SPLASH");readSettings();}TLoginDialog::~TLoginDialog()
{delete ui;
}void TLoginDialog::readSettings()
{QSettings settings;bool saved=settings.value("saved",false).toBool();m_user=settings.value("UserName","user").toString();QString defaultPSWD=encrypt("12345");m_pwd=settings.value("PSWD",defaultPSWD).toString();if(saved){ui->EditUser->setText(m_user);}ui->checkBox->setChecked(saved);
}void TLoginDialog::writeSettings()
{QSettings settings;settings.setValue("UserName",m_user);settings.setValue("PSWD",m_pwd);settings.setValue("saved",ui->checkBox->isChecked());}QString TLoginDialog::encrypt(const QString &str)
{QByteArray btArray=str.toLocal8Bit();QCryptographicHash hash(QCryptographicHash::Md5);hash.addData(btArray);QByteArray resultArray=hash.result();QString md5=resultArray.toHex();return md5;
}
void TLoginDialog::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){m_moving=true;m_lastPos=event->globalPosition().toPoint()-this->pos();}return QDialog::mousePressEvent(event);
}void TLoginDialog::mouseReleaseEvent(QMouseEvent *event)
{m_moving=false;event->accept();
}void TLoginDialog::mouseMoveEvent(QMouseEvent *event)
{QPoint eventPos=event->globalPosition().toPoint();if(m_moving&&(event->buttons()&Qt::LeftButton)&& (eventPos-m_lastPos-pos()).manhattanLength()>QApplication::startDragDistance()){move(eventPos-m_lastPos);m_lastPos=eventPos-this->pos();}return QDialog::mouseMoveEvent(event);
}void TLoginDialog::on_btnOk_clicked()
{QString user=ui->EditUser->text().trimmed();QString pwd=ui->EditPwd->text().trimmed();QString encrptPSWD=encrypt(pwd);if((m_user==user)&&(encrptPSWD==m_pwd)){writeSettings();this->accept();}else{m_tryCount++;if(m_tryCount>M_MAXCOUT){QMessageBox::critical(this,"错误","输入错误次数太多,强行退出");this->reject();}elseQMessageBox::warning(this,"错误提示","用户名或者密码错误");}
}

相关文章:

Qt之登录界面(splash)

在上一篇多文档窗口设计(MDI)的基础上增加了一个登录界面&#xff08;splash&#xff09;. 该模块可以扩展为常规的软件登录界面。 界面展示如下 如果用户名和密码输入正确&#xff0c;则调到MDI界面&#xff0c;如果用户名和密码一共输入三次以上&#xff0c;则程序强制退出…...

NotebookLM:Google 最新 AI 笔记助理解析与实战应用

NotebookLM&#xff1a;Google 最新 AI 笔记助理解析与实战应用 在 AI 驱动的生产力工具不断进化的今天&#xff0c;Google 推出的 NotebookLM&#xff08;Notebook Language Model&#xff09;成为了一款备受关注的智能笔记助理。它结合了 Google 的大语言模型&#xff08;LL…...

软路由系统iStoreOS 一键安装 docker compose

一键安装命令 大家好&#xff01;今天我来分享一个快速安装 docker-compose 的方法。以下是我常用的命令&#xff0c;当前版本是 V2.32.4。如果你需要最新版本&#xff0c;可以查看获取docker compose最新版本号 部分&#xff0c;获取最新版本号后替换命令中的版本号即可。 w…...

vue3本地文件下载

开发记录&#xff1a; vue3本地下载文件要把文件放到public下&#xff0c;如果放在src里面可能会出现这个问题...

纯代码实现给WordPress添加文章复制功能

在给wordpress添加内容时&#xff0c;有时会遇到文章复制的功能&#xff0c;但是wordpress又没有这个功能。把下面一段代码添加到functions.php文件中&#xff0c;就可以实现这个功能。 /** Function for post duplication. Dups appear as drafts. User is redirected to the…...

Redis 中 TTL 的基本知识与禁用缓存键的实现策略(Java)

目录 前言1. 基本知识2. Java代码 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 单纯学习Redis可以看我前言的Java基本知识路线&#xff01;&#xff01; 对于Java的基本知识推荐阅读&#xff1a; java框架…...

【PyQt】图像处理系统

[toc]pyqt实现图像处理系统 图像处理系统 1.创建阴影去除ui文件 2.阴影去除代码 1.创建阴影去除ui文件 UI文件效果图&#xff1a; 1.1QT Desiger设置组件 1.两个Pushbutton按钮 2.两个label来显示图像 3.Text Browser来显示输出信息 1.2布局的设置 1.先不使用任何La…...

Ruby语言的循环实现

Ruby语言的循环实现深入探讨 在程序设计中&#xff0c;循环是一种常见的控制结构&#xff0c;用于重复执行某些代码块。不同的编程语言提供了不同类型的循环结构&#xff0c;以满足不同的需求。Ruby是一种灵活且易于使用的编程语言&#xff0c;其循环实现方式独具一格&#xf…...

javaEE安全开发 SQL预编译 Filter过滤器 Listener 监听器 访问控制

前言 java开发和其他开发的不同并且更安全就是因为他拥有简单的预编译机制 filter 过滤器 和 listener 监听器 这个很重要 就是 web应用监听器和过滤器是在 Servlet 之前的并且 我们的请求和响应都需要经过 两者的同意才可以通过 缺一不可 、 Listener 安全方面 监听器…...

一体机cell服务器更换内存步骤

一体机cell服务器更换内存步骤&#xff1a; #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…...

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态&#x1f407;一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计&#x1f9a9;1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…...

rhel7.9利用有网络环境打包ansible

RHEL7.9激活(可省略) # 注册 subscription-manager register --usernameyour_username --passwordyour_password --auto-attach # 查看订阅状态 subscription-manager list # 将 “enabled1” 改为 “enabled0” vi /etc/yum/pluginconf.d/subscription-manager.conf 配置阿…...

vim文本编辑器三种模式的转换关系

输入模式 ———— 末行模式 输入模式和末行模式不能相互转换。 输入模式 ———— 命令模式 输入模式可以通过点击esc进入命令模式。 命令模式可以通过点击i进入输入模式。 末行模式 ———— 命令模式 末行模式可以通过点击esc进入命令模式。 命令模式可以通过shift&…...

深度学习:大模型Decoding+MindSpore NLP分布式推理详解

大模型推理流程 1. 用户输入提示词&#xff08;Prompt&#xff09; 假设用户输入为&#xff1a;“从前&#xff0c;有一只小猫&#xff0c;它喜欢……” 我们的目标是让模型生成一段完整的故事。 2. 模型处理用户输入 2.1 分词&#xff1a;输入提示被分词为模型可以理解的…...

【JVM中的三色标记法是什么?】

JVM中的三色标记法是什么? 一、基本概念二、标记过程三、优势与问题四、漏标与多标的解决方案三色标记法(Tri-color Marking Algorithm)是Java虚拟机(JVM)中一种用于追踪对象存活状态的垃圾回收算法。 它基于William D. Hana和Mark S. McCulleghan在1976年提出的两色标记法…...

数据库服务体系结构

1. 数据库服务应用配置 服务进行配置有什么作用&#xff1f; 实现服务运行启动 实现某些功能 应用配置有三种方式&#xff1f; 利用编译安装进行配置 编写配置文件信息 ,.默认的配置文件: /etc/my.cnf 利用启动命令参数配置信息&#xff0c;mysqld_safe --skip-grant-tables --…...

vscode项目依赖问题

必读 一定要将前端下拉的项目备份一下&#xff0c;很容易运行导致依赖报错&#xff0c;重新下载 命令 使用幽灵分解器安装 pnpm install 替代 npm install 设置淘宝NPM镜像源 yarn config set registry https://registry.npmmirror.com 查看目前依赖包的版本 npm list ant-d…...

R数据分析:有调节的中介与有中介的调节的整体介绍

单独的有调节的中介或者有中介的调节好多同学还大概能看明白,但是两个东西一起说我发现大部分同学就懵逼了。今天我就尝试将两种方法一起讲讲,重点帮助大家厘清两种方法的异同。 先从整体上看下两者的概念: 有中介的调节首先落脚在调节,调节作用必须是显著的,并且这个调…...

RabbitMQ-消息可靠性以及延迟消息

目录 消息丢失 一、发送者的可靠性 1.1 生产者重试机制 1.2 生产者确认机制 1.3 实现生产者确认 &#xff08;1&#xff09;开启生产者确认 &#xff08;2&#xff09;定义ReturnCallback &#xff08;3&#xff09;定义ConfirmCallback 二、MQ的持久化 2.1 数据持久…...

Hack The Box-Starting Point系列Oopsie

一. 答案 With what kind of tool can intercept web traffic? (什么样的工具可以拦截Web流量?) proxyWhat is the path to the directory on the webserver that returns a login page?(Web服务器上返回登录页面的目录路径是什么?) /cdn-cgi/loginWhat can be modified …...

Linux运维篇-PAM安全模块配置

PAM是什么&#xff1f; PAM&#xff08;可插入认证模块&#xff09;是UNIX操作系统上一个实现模块化的身份验证的服务。当程序需要对用户进行身份验证时加载并执行。PAM文件通常位于/etc/pam.d目录中。 而Linux-PAM&#xff0c;是linux可插拔认证模块&#xff0c;是一套可定制…...

麒麟V10系统上安装Oracle

以下是在麒麟V10系统上安装Oracle数据库的详细步骤&#xff1a; 安装前准备 检查系统版本&#xff1a;使用uname -a、cat /etc/os-release等命令检查服务器是麒麟V10系统。 配置固定IP和本地yum源&#xff1a; 挂载麒麟V10的iso文件到/mnt目录&#xff0c;如mount -o loop Ky…...

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(七)

文章目录 一、题库管理模块实现1、新增题目功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、题目列表功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询题目列表接口实现2.3.2 后端编辑试题接口实现2.4 效果展示二、代码下载一、题库管…...

Elasticsearch:Jira 连接器教程第二部分 - 6 个优化技巧

作者&#xff1a;来自 Elastic Gustavo Llermaly 将 Jira 连接到 Elasticsearch 后&#xff0c;我们现在将回顾最佳实践以升级此部署。 在本系列的第一部分中&#xff0c;我们配置了 Jira 连接器并将对象索引到 Elasticsearch 中。在第二部分中&#xff0c;我们将回顾一些最佳实…...

Vulnhub Earth靶机攻击实战(一)

导语   首先需要我们进入到https://vulnhub.com/entry/the-planets-earth,755/地址去获取Earth靶机,然后导入到VMware中,如下所示。 文章目录 导入虚拟机信息收集路径扫描破解密码反射Shell提权总结导入虚拟机 下载并导入虚拟机,如下所示。 信息收集 首先我们通过arp-sc…...

51单片机——DS18B20温度传感器

由于DS18B20数字温度传感器是单总线接口&#xff0c;所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信&#xff0c;将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…...

HTML5+Canvas实现的鼠标跟随自定义发光线条源码

源码介绍 HTML5Canvas实现的鼠标跟随自定义发光线条特效源码非常炫酷&#xff0c;在黑色的背景中&#xff0c;鼠标滑过即产生彩色变换的发光线条效果&#xff0c;且线条周围散发出火花飞射四溅的粒子光点特效。 效果预览 源码如下 <!DOCTYPE html PUBLIC "-//W3C//D…...

关于jwt和security

JSON Web Token&#xff08;缩写 JWT&#xff09; 目前最流行、最常见的跨域认证解决方案&#xff0c;前端后端都需要会使用的东西-腾讯云开发者社区-腾讯云 SpringBoot整合Security安全框架、控制权限让我们一起来看看Security吧&#xff01;我想每个写项目的人&#xff0c;都…...

统计学习算法——逻辑斯谛回归

内容来自B站Up主&#xff1a;动画讲编程https://www.bilibili.com/video/BV1CR4y1L7RC、风中摇曳的小萝卜https://www.bilibili.com/video/BV17r4y137bW&#xff0c;仅为个人学习所用。 极大似然估计 几率、概率与似然 几率是指某个事件发生的可能性与不发生的可能性之比&am…...

算法(蓝桥杯)贪心算法5——删数问题的解题思路

问题描述 给定一个高精度的正整数 n&#xff08;n≤1000 位&#xff09;&#xff0c;需要删除其中任意 s 个数字&#xff0c;使得剩下的数字按原左右顺序组成一个新的正整数&#xff0c;并且这个新的正整数最小。例如&#xff0c;对于数字 153748&#xff0c;删除 2 个数字后&a…...

建设论坛网站视频/百度seo推广工具

数据可视化的应用越来越普遍&#xff0c;数据可视化也成为时下的热门搜索词&#xff0c;但什么是数据可视化呢&#xff1f; 下面通过经典数据可视化的应用&#xff0c;让大家对数据可视化有个具体的了解。 1854年伦敦爆发严重霍乱&#xff0c;John Snow医生统计每户病亡人数&a…...

现在做电商什么最赚钱/湘潭seo公司

2018考研复试交流群(进群领内部资料) 576433840首都师范大学2018年考研调剂信息公布2018年考研调剂系统已正式开通&#xff0c;部分成绩不太理想的考生可能会考虑考研调剂&#xff0c;为了方便考生&#xff0c;中公考研小编为大家整理了2018年首都师范大学考研调剂信息公布&…...

福永做网站/免费网站申请域名

新春佳节&#xff0c;万家团圆&#xff0c;预祝大家在新的一年里&#xff0c;阖家康泰&#xff0c;万事如意。 回顾过去的2017年&#xff0c;时光飞逝&#xff0c;忙忙碌碌&#xff0c;总结如下&#xff1a; 1、《高性能SQL调优精要与案例解析》一书顺利出版&#xff0c;感谢各…...

杭州企业网站开发/站长工具综合查询系统

有时候我们自己内心经常在斗争&#xff0c;经常有两种声音在争论&#xff0c;比如 是看书呢&#xff1f;还是看电影呢&#xff1f;其实这是一个很大的话题&#xff0c;感性与理性的较量&#xff0c;而今天所说的就是认识到产生这种现象的原因。我们在一定程度上被原始社会进化的…...

河南企业网站建设价格/二十条优化措施原文

PhantomJS下载直接使用 &#xff0c;它本质上是一个基于webkit内核的无界面浏览器&#xff0c;并可使用JavaScript或CoffeeScript进行编程。由于没有界面&#xff0c;它的使用就有点像curl, lynx之类的命令行式文本浏览器。但PhantomJS远不是文本浏览器那么简单&#xff0c;由于…...

网站经营/百度seo技术优化

Equivalent Strings Problems Link: http://codeforces.com/contest/559/problem/B Mean: 给定两个等长串s1&#xff0c;s2&#xff0c;判断是否等价。 等价的含义为&#xff1a; 若长度为奇数&#xff0c;则必须是相同串。 若长度是偶数&#xff0c;则将两串都均分成…...