文章目录

  • 登录相应功能实现
  • 正式编程
    • 验证输入的是否是合法的邮箱地址
    • 完整代码
      • 正确输入
      • 错误输入
  • 下一篇

登录相应功能实现

当我们点击登录按钮的时候需要对账号和密码进行验证。我们需要提前准备好了所有学员的账号和密码信息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——驾校科目一考试——登录窗口的功能(验证邮箱地址)相关推荐

  1. 10驾校科目一考试系统——窗口交互

    文章目录 回顾 完整代码 Examsys.pro examdialog.h examdialog.cpp logindialog.h logindialog.cpp main.cpp 运行效果 登录页 ...

  2. 03——驾校科目一考试系统——登录界面

    文章目录 需求分析 添加标签 添加输入框 添加按钮 运行项目--初始版本 问题:设计界面和生成大小不同的. 解决方案 运行,成功解决 添加功能--补充背景图 做好准备,添加标签 添加资源 运行项目-- ...

  3. 09驾校科目一考试系统——提交分数

    文章目录 完整版 examdialog.h examdialog.cpp 运行结果 单选未做完: 多选未做完 判断未做完 满分情况 非满分情况 细节剖析 相比于上一版增加的方法和实现 examdial ...

  4. 05——驾校科目一考试系统——验证账号密码

    文章目录 账号密码信息 开始 完整代码 运行 正确输入 错误输入 将密码框进行隐藏 运行结果 下一篇 账号密码信息 开始 回到登录的槽函数. 完整代码 #include "logindial ...

  5. 07——驾校科目一考试系统——布局题库

    文章目录 总代码 examdialog.h examdialog.cpp 运行效果 重要知识点总结(从代码中提炼出来的) 初始化布局 打开文件并设置字符集 将文本框就设置为只读属性 对于文本内数据的操 ...

  6. 06——驾校科目一考试系统——考试时间

    文章目录 考试界面需求分析 具体实现 构建窗体 编写代码 快速在源文件中添加定义小技巧 代码实现 examdialog.h examdialog.cpp 省略登录界面 main.cpp 测试结果 优化 ...

  7. 08——驾校科目一考试——布局按钮

    文章目录 完整版 examdialog.h examdialog.cpp 运行结果 细节剖析 相比于上一版本的新增方法及实现 examdialog.h examdialog.cpp 知识点归类 构造单 ...

  8. 上海万国驾校 科目三考试

    目录 前言 考试三条线路 一号线线路点位注意事项 先整体描述一下大致的线路: 再说其中细致点: 四号线线路点位注意事项 先整体描述一下大致的线路: 再说其中细致点: 五号线线路点位注意事项 先整体描述 ...

  9. 11驾校科目一考试系统——发布项目

    文章目录 发布项目 修改工作目录 使用windeployqt发布 运行结果 如果还是遇到问题 驾校科目一考试系统完结!! 发布项目   当我们编写完项目之后就需要发布项目 .就需要发布项目了.一般发布 ...

最新文章

  1. U-boot中常用参数设定及常用宏的解释和说明
  2. 递归遍历所有文件夹名称
  3. 融合机器人技术和神经科学的神经工程未来与挑战
  4. IEEE conference 中出现的PDF字体嵌入的问题
  5. 直播 | SemEval-2020自由文本关系抽取冠军方案解读(附NLP竞赛常用技巧总结)
  6. boost::mpi::wait_any相关用法的测试程序
  7. 前端node 和vue开发之环境搭建
  8. Game of Cards Gym - 102822G
  9. 用ISA Server做***路由代替专线
  10. hdu 4856 Tunnels
  11. 国产手机可以复制苹果的成功吗?
  12. oracle数据块dump信息,从数据块的dump信息能看出什么
  13. 拆轮子:requests
  14. UVA10751 Chessboard【数学水题】
  15. 51nod 1273 旅行计划——思维题
  16. 网络运维经验分享01
  17. 由最近Win10升级事故,回忆一次经历
  18. 怎么用手机当电脑摄像头?安卓苹果都可以,巨简单的N种方案任君挑选
  19. 前端基础知识体系之项目经验篇
  20. 河南省邓州市计算机学校,2019年邓州市职业技术学校招生简章及招生专业

热门文章

  1. 哪些企业优先复工?数据驱动的方法能给你答案
  2. 数据库连接工具-DataGrip 使用总结
  3. ubuntu上运行g2o
  4. 图片分享就能赚钱,简单搬运日入100+
  5. 面试--金蝶云之家经验总结
  6. Excel进阶课程一函数与公式
  7. 正则表达式 密码需至少包含数字、字母、符号中的2种
  8. java smtp_java发送邮箱(SMTP协议)
  9. TCP洪水攻击Ru侵和结果分析解决方案
  10. java对字符串归一化_字符串归一化