QT 记住账号密码登录

article/2025/9/11 13:12:46

        弄了个简单的记住账号密码登录功能,适合初学者学习,直接上代码,代码有注释。

        喂饭到嘴边了,看你会不会吃啦

        开发环境是VS2015

1、由于没有写注册功能,所以账号和密码我提前写在一个ini文件,这个文件直接手动写,我是用notepad++写的

         上面那组是上次成功登录时是否记住密码,下面那组是账号和密码(好像ini文件的左边也就是键不支持中文,所以下面那组对应关系是  密码=账号 )

2、头文件    LoginPassword.h

#pragma once#include <QtWidgets/QWidget>
#include "ui_LoginPassword.h"
#include <QSettings>
#include <QMessageBox>
#include <QTextCodec>// 宏定义,存放登录信息的ini配置文件的绝对路径,你也可以自定义自己的路径,相对绝对都行
// 因为这里没有写注册功能,所以ini文件提前写好
#define CONFIGPATH (QCoreApplication::applicationDirPath() + "/config/config.ini")class LoginPassword : public QWidget
{Q_OBJECTpublic:LoginPassword(QWidget *parent = Q_NULLPTR);private:void loginInit();private slots:void checkBox_password_clicked();void pushButton_login_clicked();private:Ui::LoginPasswordClass ui;bool ispassword;
};

3、源文件    LoginPassword.cpp

#include "LoginPassword.h"LoginPassword::LoginPassword(QWidget *parent): QWidget(parent)
{ui.setupUi(this);// 登录界面初始化loginInit();// 绑定信号和槽connect(ui.checkBox_password, &QCheckBox::clicked, this, &LoginPassword::checkBox_password_clicked);connect(ui.pushButton_login, &QPushButton::clicked, this, &LoginPassword::pushButton_login_clicked);
}// 登录界面初始化
void LoginPassword::loginInit()
{QSettings setting(CONFIGPATH, QSettings::IniFormat); // 打开存放登录信息的ini文件setting.setIniCodec(QTextCodec::codecForName("UTF-8")); // 设置编码格式,因为我这里有中文,读和写的时候都要保持一致QString isremember = setting.value("login/isremember").toString(); // 是否选择了记住密码QString name = QString::fromUtf8(setting.value("login/username").toByteArray()); // 账号QString lock = setting.value("login/password").toString(); // 密码ui.lineEdit_username->setText(name); // 显示上一次登录的账号名if (isremember == "true") // 记住密码{ui.lineEdit_password->setText(lock); // 密码写在密码输入框ui.checkBox_password->setChecked(true); // 记住密码那里打√ispassword = true; // 记住密码} else{ui.checkBox_password->setChecked(false); // 记住密码那里不打√ispassword = false; // 不记住密码}
}// 登录
void LoginPassword::pushButton_login_clicked()
{QString textname = ui.lineEdit_username->text(); // 获得输入的账号QString textpassword = ui.lineEdit_password->text(); // 获得输入的密码QSettings setting(CONFIGPATH, QSettings::IniFormat); // 打开ini文件setting.setIniCodec(QTextCodec::codecForName("UTF-8")); // 设置编码格式QStringList nameLockList = setting.childGroups(); // 获得ini文件的所有组setting.beginGroup(nameLockList[0]); // 选择账号密码那组(这组在下面,下标组名却是0)bool islogin = false; // 用来查验账号密码是否正确foreach(QString key, setting.childKeys()) // 遍历账号密码那组{if ((key == textpassword) && (QString::fromUtf8(setting.value(key).toByteArray()) == textname)) // 查验输入的账号密码和文件里的账号密码是否有对应的{islogin = true; // 如果遍历到有就改变标志位并退出break;}}if (islogin) // 说明账号密码正确{QSettings writeini(CONFIGPATH, QSettings::IniFormat); // 打开ini文件writeini.setIniCodec(QTextCodec::codecForName("UTF-8")); // 设置编码格式if (ispassword) // 选择保存密码{writeini.setValue("login/isremember", "true"); // 写ini文件时记录为true}else // 不保存密码{writeini.setValue("login/isremember", "false"); // 写ini文件时记录为false}writeini.setValue("login/username", textname); // 把账号写入ini文件writeini.setValue("login/password", textpassword); // 把密码写入ini文件// 消息提示,模拟登录成功,真正设计这里一般是跳转到主界面或播放登录动画QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("登录成功"));}else // 账号密码跟ini文件对不上{// 消息提示登录失败QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("账号或密码有误,请重新登录"));}
}// 选择是否记住密码
void LoginPassword::checkBox_password_clicked()
{// 根据是否记住密码改变标志位ispassword = ui.checkBox_password->isChecked();
}

4、UI 界面

        我用qt设计师界面设计写的,方便简单,没几个控件

5、效果显示 

 

 


http://chatgpt.dhexx.cn/article/wDUyRu6t.shtml

相关文章

31、Java——JDBC实现账号密码登录

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;乐趣国学的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

基于Java的账号、密码登陆页面及验证

基于Java的登陆页面 需求功能 程序登录页面验证页面 后续 需求 我们在日常上网的过程中&#xff0c;常常会使用很多注册、登录我们的账号和密码的环节。这是网页开发中必不可少的一个环节。本文中将利用JavaTomcat完成一个简单的账号、密码登录的网页。 功能 首先&#xff0…

MATLAB中用imfilter()对图像进行相关或卷积运算前一定要用tofloat()或im2double()将数据类型转换为浮点型

MATLAB中用imfilter()对图像进行相关或卷积运算前一定要用tofloat()将数据类型为float 为什么&#xff1f; 看一个实例的运行结果就知道了~ f imread(F:\material\images\P0020-Line-detection-01.tif); w [2 -1 -1;-1 2 -1;-1 -1 2]; g_tofloat imfilter(tofloat(f),w); …

matlab图像处理函数

1.1 读取和保存图像(其中Iimread(‘’)) 1.1.1 imtool() imtool&#xff08;I&#xff09;在图形中显示灰度图像I&#xff0c;I为矩阵&#xff0c;元素范围为0-255. imtool&#xff08;I&#xff0c;[low&#xff0c;high]&#xff09;小于等于low的为黑色&#xff0c;大于等于…

【Matlab】im2double的用法

im2double函数用于将图像转换为双精度。 语法形式有4种&#xff0c;分别是&#xff1a; I2 im2double(I); RGB2 im2double(RGB); I im2double(BW); X2 im2double(X, indexed); 描述&#xff1a; I2 im2double(I)将灰度图像I转换为双精度&#xff0c;必要时可以…

MATLAB图像处理,double 与im2double的用处与区别【学习笔记】

double只是将像素的灰度值从int8换为double&#xff0c;数值大小不变&#xff0c;125还是125.0。 im2double则附带了归一化操作&#xff0c;125变成了125/2550.490196078 double也不是毫无用处&#xff0c;在将一个256级的灰度图修改为4级时候就用这个&#xff0c;用im2double反…

信息论 | 计算离散信源的信息量和熵的MATLAB实现(函数封装调用)

《信息论基础》 实验报告 姓名 XX 班级 XXXXXX 学号 2020XXXXXXXX 实验项目 计算离散信源的熵 日期 2022.10.21 实验环境 联想电脑MATLAB R2018a版 实验内容与完成情况&#xff08;记录实验内容、操作步骤、实验结果等&#xff0c;包括系统输出的错误信息&#xff0c…

信息量,信息熵,纯度

如果看不懂博文&#xff0c;请阅读《信息论基础》一看便懂。 链接&#xff1a;https://pan.baidu.com/s/1T7rS4owM2nU_DP6rthqUPA 提取码&#xff1a;zu9s &#xff08;1&#xff09;消息 消息是实体&#xff0c;信息是抽象的。可以从消息中获取信息。消息的表现形式可以是…

基于GIS技术的地质灾害易发性评价—信息量模型

1.将上述步骤的所有图层和历史滑坡点导入arcgis,并使用多值提取至点的步骤,提取滑坡点属性值 2.转换工具—表转excel,得到多值提取至点的表格 3.打开各图层属性表提取每一分级的栅格像元,并计算信息量值。

自信息量,熵及其性质

一般地&#xff0c;如果一个随机事件有种等可能的结果&#xff0c;那么对其编码恰需要n位二进制数&#xff0c;即n比特来储存消息。 因此&#xff0c;可以把对所有可能消息的最小二进制编码位数近似着作该随机事件的熵&#xff0c;记为H。 对于上面的例子分别有 定义2.3 …

GIS与地质灾害评价——信息量的统计

GIS与地质灾害评价中一般都要进行信息量的统计&#xff0c;特别是地质灾害易发性评价的过程中&#xff0c;我们通常将某一因子分为几类&#xff0c;为了比较某一因子不同类别致灾的贡献率&#xff0c;我们通常都要进行信息量的统计。 下边我将某一区域的高程因子为例进行信息量…

数学期望、信息量、信息熵、相对熵、交叉熵

1、数学期望 数学期望就是总体的均值&#xff0c;或者各项的加权平均。 先看离散的情况&#xff0c;假设X为离散型随机变量&#xff0c;x1&#xff0c;x2&#xff0c;x3&#xff0c;……&#xff0c;xk为随机变量的所有可能取值&#xff0c;p1&#xff0c;p2&#xff0c;p3&a…

信息论:信息量的计算

香农定义&#xff0c;一个事件包含信息量的大小由这个事件消除了多少不确定性决定 计算得出的信息称为 Shannon information content 信息量在某些情况下是可加的&#xff0c;比如&#xff1a; 得知一个六面骰子投掷三次的结果所包含的信息量&#xff0c;是得知投掷一次的结果…

信息量与信息熵

信息量 信息奠基人香农&#xff08;Shannon&#xff09;认为“信息是用来消除随机不确定性的东西”。也就是说衡量信息量大小就看这个信息消除不确定性的程度。 “太阳从东方升起了”这条信息没有减少不确定性。因为太阳肯定从东面升起。这是句废话&#xff0c;信息量为0。 …

信息量为什么要表示成对数的形式

近期在路上进行了不少的思考&#xff0c;任何方面&#xff0c;任何领域…我会把这些记录在手机的备忘录里&#xff0c;然后在周末总结出来&#xff0c;早就成了习惯。 近日对信息论&#xff0c;排队论以及贝叶斯定理关注比较多&#xff0c;后二者可以完全改造TCP的拥塞控制机制…

离散信源信息量、平均信息量的计算

信息量I与消息出现的概率 P(x) 之间的关系&#xff1a; 1.信息量是概率的函数&#xff0c;即If[P(x)]&#xff1b; 2.P(x) 越小&#xff0c;I越大&#xff0c;P(x) 越大&#xff0c;I越小&#xff1b; 3.若干个相互独立事件构成的消息&#xff0c;所含信息量等于各独立事件信息…

信息量和信息熵的理解

信息量和信息熵的概念最早是出现在通信理论中的&#xff0c;其概念最早是由信息论鼻祖香农在其经典的paper《A Mathematical Theory of Communication》中提出的。如今&#xff0c;这些概念不仅仅是通信领域中的基础概念&#xff0c;也被广泛的应用到了其他的领域中&#xff0c…

《通信原理》(2):信息量及平均信息量

前言 在上篇文章中我们介绍了下通信系统&#xff0c;按照信道中传输的是模拟信号还是数字信号&#xff0c;通信系统可分为模拟通信系统和数字通信系统&#xff1b;此外我们还介绍了广播、点-点、单工通信、半双工通信、全双工通信、并行传输、串行传输这些通信方式。在这篇文章…

特征选择——互信息量

最近做了一个数据比赛&#xff0c;由于对数据背后的业务不太了解&#xff0c;所以特征工程大多采取了“暴力”提取的方式&#xff0c;最终特征过多直接导致模型存在过拟合问题。所以赛后总结在做特征工程的过程中就要考虑特征的取舍问题&#xff0c;主要通过特征与因变量Y之间的…

信息论——信源信息量和信息熵

目录 一、概率基础知识 二、信源信息量和信息熵 离散有记忆信源 信源的随机性 信息量大小 自信息量&#xff1b;该符号出现后&#xff0c;提供给接收者的信息量&#xff0c;表示信源符号的先验不确定性 事件之间的互信息量&#xff1a;事件与事件之间的互信息量之所以存…