04——驾校科目一考试——登录窗口的功能(验证邮箱地址)
文章目录
- 登录相应功能实现
- 正式编程
- 验证输入的是否是合法的邮箱地址
- 完整代码
- 正确输入
- 错误输入
- 下一篇
登录相应功能实现
当我们点击登录按钮的时候需要对账号和密码进行验证。我们需要提前准备好了所有学员的账号和密码信息account.txt。
那我们如何实现点击登录按钮完成登录了?我们需要用到信号与槽。
那如何来设置呢?在设计模式中右键登录按钮选择转到槽选项。
选择什么样的信号。我们选择clicker()即点击信号。
此时
编译器自动索引到类的源文件,而且生成了一个槽方法。此时按住f2(f2可以切换定义和声明)
按了f2之后进入 .h文件,。可以看到这是以私有的槽方法。
注意:放我们使用自动生成的槽方法的时候,编译器起名都是以 on开头然后下划线控件对象名字下划线信号的名字。再按f2回到实现函数。
测试是否会真的响应。写一个小的消息框进行测试。
//完整测试代码!!
#include "logindialog.h"
#include "ui_logindialog.h"
#include<QtWidgets>
#include<QMessageBox>LoginDialog::LoginDialog(QWidget *parent) :QDialog(parent),ui(new Ui::LoginDialog)
{//setupUi初始化界面方法ui->setupUi(this);//解决空隙/*标签有个方法可以设置自己的填充属性。那么界面信息上面的空间我们怎么去访问呢?通过 ui指针。因为ui指向的是描述界面信息的这个类对象。所以我们通过 ui来访问界面上的控件。使用ui前,先给控件设置好名字是关键。*///ui通过标签属性访问到图像然后调用 setScaledContents方法选择是否填充。true(填充)、false(不填充)ui->imgLabel->setScaledContents(true);//设置填充之后,我们还需要设置当前窗体的宽和高,需要和标签一致的大小。this->resize(ui->imgLabel->width(),ui->imgLabel->height());//使用resize重新设置整个窗体的大小 (width,height)//设置窗口风格 方法太长怎么办?真的一个一个敲?可以通过缩写 如设置标题:sWT(输入首字母)就能直接出来了。this->setWindowTitle("驾校科目一考试登录");//设置标题//设置一个普通的对话框,问号我们就不需要了,再加一个关闭按钮即可。this->setWindowFlags(Qt::Dialog|Qt::WindowCloseButtonHint);}LoginDialog::~LoginDialog()
{//析构进行自然回收delete ui;
}void LoginDialog::on_loginBtn_clicked()
{/*传入参数:第一个:指定一个父窗口第二个:提示的一个标题第三个:提示的内容*/QMessageBox::information(this,"提示","槽方法调用咯!");
}
代码运行。
正式编程
当点击登录按钮后看,验证用户和密码。此时学员账号全部都是邮箱地址。总所周知很多软件登录邮箱地址不对,会有提示
验证输入的是否是合法的邮箱地址
正则表达式验证邮箱是否正确
使用正则表达式需要使用特定的字符进行组合。
完整代码
#include "logindialog.h"
#include "ui_logindialog.h"
#include<QtWidgets>
#include<QMessageBox>LoginDialog::LoginDialog(QWidget *parent) :QDialog(parent),ui(new Ui::LoginDialog)
{//setupUi初始化界面方法ui->setupUi(this);//解决空隙/*标签有个方法可以设置自己的填充属性。那么界面信息上面的空间我们怎么去访问呢?通过 ui指针。因为ui指向的是描述界面信息的这个类对象。所以我们通过 ui来访问界面上的控件。使用ui前,先给控件设置好名字是关键。*///ui通过标签属性访问到图像然后调用 setScaledContents方法选择是否填充。true(填充)、false(不填充)ui->imgLabel->setScaledContents(true);//设置填充之后,我们还需要设置当前窗体的宽和高,需要和标签一致的大小。this->resize(ui->imgLabel->width(),ui->imgLabel->height());//使用resize重新设置整个窗体的大小 (width,height)//设置窗口风格 方法太长怎么办?真的一个一个敲?可以通过缩写 如设置标题:sWT(输入首字母)就能直接出来了。this->setWindowTitle("驾校科目一考试登录");//设置标题//设置一个普通的对话框,问号我们就不需要了,再加一个关闭按钮即可。this->setWindowFlags(Qt::Dialog|Qt::WindowCloseButtonHint);}LoginDialog::~LoginDialog()
{//析构进行自然回收delete ui;
}void LoginDialog::on_loginBtn_clicked()
{//正则验证邮箱地址: 用户名@域名//正则表达式的元字符代表的意思://^:表示规则字符串的开始 $:表示规则字符串的结束//+:表示匹配次数≥1次,即最少出现一次//*:表示匹配任意次数(可为0次){n,m} 表示匹配次数,至少n次,至多m次//使用正则表达式需要使用 QRegExp类// \. 视为了转义 .QRegExp rx("^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$");//使用正则。传入参数是想要匹配的对象:这里想要匹配的是用户账号。//所以需要获取空间上的文本信息: ui->accountEdit->text()bool res=rx.exactMatch(ui->accountEdit->text());if(!res){//匹配不成!QMessageBox(this,"提示","非法的邮箱地址,请重新输入");}else{QMessageBox(this,"提示","欢迎登录科目一考试系统");}}
正确输入
错误输入
下一篇
账号密码验证
04——驾校科目一考试——登录窗口的功能(验证邮箱地址)相关推荐
- 10驾校科目一考试系统——窗口交互
文章目录 回顾 完整代码 Examsys.pro examdialog.h examdialog.cpp logindialog.h logindialog.cpp main.cpp 运行效果 登录页 ...
- 03——驾校科目一考试系统——登录界面
文章目录 需求分析 添加标签 添加输入框 添加按钮 运行项目--初始版本 问题:设计界面和生成大小不同的. 解决方案 运行,成功解决 添加功能--补充背景图 做好准备,添加标签 添加资源 运行项目-- ...
- 09驾校科目一考试系统——提交分数
文章目录 完整版 examdialog.h examdialog.cpp 运行结果 单选未做完: 多选未做完 判断未做完 满分情况 非满分情况 细节剖析 相比于上一版增加的方法和实现 examdial ...
- 05——驾校科目一考试系统——验证账号密码
文章目录 账号密码信息 开始 完整代码 运行 正确输入 错误输入 将密码框进行隐藏 运行结果 下一篇 账号密码信息 开始 回到登录的槽函数. 完整代码 #include "logindial ...
- 07——驾校科目一考试系统——布局题库
文章目录 总代码 examdialog.h examdialog.cpp 运行效果 重要知识点总结(从代码中提炼出来的) 初始化布局 打开文件并设置字符集 将文本框就设置为只读属性 对于文本内数据的操 ...
- 06——驾校科目一考试系统——考试时间
文章目录 考试界面需求分析 具体实现 构建窗体 编写代码 快速在源文件中添加定义小技巧 代码实现 examdialog.h examdialog.cpp 省略登录界面 main.cpp 测试结果 优化 ...
- 08——驾校科目一考试——布局按钮
文章目录 完整版 examdialog.h examdialog.cpp 运行结果 细节剖析 相比于上一版本的新增方法及实现 examdialog.h examdialog.cpp 知识点归类 构造单 ...
- 上海万国驾校 科目三考试
目录 前言 考试三条线路 一号线线路点位注意事项 先整体描述一下大致的线路: 再说其中细致点: 四号线线路点位注意事项 先整体描述一下大致的线路: 再说其中细致点: 五号线线路点位注意事项 先整体描述 ...
- 11驾校科目一考试系统——发布项目
文章目录 发布项目 修改工作目录 使用windeployqt发布 运行结果 如果还是遇到问题 驾校科目一考试系统完结!! 发布项目 当我们编写完项目之后就需要发布项目 .就需要发布项目了.一般发布 ...
最新文章
- U-boot中常用参数设定及常用宏的解释和说明
- 递归遍历所有文件夹名称
- 融合机器人技术和神经科学的神经工程未来与挑战
- IEEE conference 中出现的PDF字体嵌入的问题
- 直播 | SemEval-2020自由文本关系抽取冠军方案解读(附NLP竞赛常用技巧总结)
- boost::mpi::wait_any相关用法的测试程序
- 前端node 和vue开发之环境搭建
- Game of Cards Gym - 102822G
- 用ISA Server做***路由代替专线
- hdu 4856 Tunnels
- 国产手机可以复制苹果的成功吗?
- oracle数据块dump信息,从数据块的dump信息能看出什么
- 拆轮子:requests
- UVA10751 Chessboard【数学水题】
- 51nod 1273 旅行计划——思维题
- 网络运维经验分享01
- 由最近Win10升级事故,回忆一次经历
- 怎么用手机当电脑摄像头?安卓苹果都可以,巨简单的N种方案任君挑选
- 前端基础知识体系之项目经验篇
- 河南省邓州市计算机学校,2019年邓州市职业技术学校招生简章及招生专业