Qt功能优化:简易登录模板

网友投稿 355 2022-09-02

Qt功能优化:简易登录模板

Qt功能优化:简易登录模板

文章目录

​​Qt功能优化:简易登录模板​​​​前言​​​​一、效果图​​​​二、相关源代码​​

​​1. .xml部分​​​​2. .h部分​​​​3. .cpp部分​​

​​总结​​

前言

一个相对健全的软件,一般均有登录注册功能,但是对于大部分初学者来说,想要实现该功能,还需要学习数据库等相关知识。那么,有没有一种不需要学习数据库等相关知识,就能实现相关功能呢?

一、效果图

如图1所示,为我用XML文件储存账号密码,并采用MD5加密技术,用来实现相关的登录功能,来帮助Qt初学者们在短时间内迅速完成一个相对功能健全的软件。

二、相关源代码

1. .xml部分

userlog.xml

<用户账号> <用户名>水漂奇鼋 <密码>19830925 <用户名>忆梦茹澜 <密码>12345678 <用户名>测试1 <密码>123456

MD5加密版,后三个密码均为123456

<用户账号> <用户名>000001 <密码>f0133c214d7fd02868f74de30d932a62 <用户名>666666 <密码>e10adc3949ba59abbe56e057f20f883e <用户名>888888 <密码>e10adc3949ba59abbe56e057f20f883e <用户名>2078411248 <密码>e10adc3949ba59abbe56e057f20f883e

2. .h部分

LoginDialog.h

#ifndef LOGINDIALOG_H#define LOGINDIALOG_H#include #include "mainwindow.h"#include #include "qdom.h"#include namespace Ui {class LoginDialog;}class LoginDialog : public QDialog{ Q_OBJECTpublic: explicit LoginDialog(QWidget *parent = 0); ~LoginDialog();private slots: void on_loginPushButton_clicked(); void showWeiChatWindow();private: Ui::LoginDialog *ui; MainWindow *weiChatWindow; QDomDocument mydoc;};#endif // LOGINDIALOG_H

MD5加密版

#ifndef LOGINDIALOG_H#define LOGINDIALOG_H#include #include #include "mainwindow.h"#include #include "qdom.h"#include namespace Ui {class LoginDialog;}class LoginDialog : public QDialog{ Q_OBJECTpublic: explicit LoginDialog(QWidget *parent = 0); ~LoginDialog(); QString strToMd5(QString str); QString convertMD5(QString inStr);private slots: void on_PawBtn_clicked(); //密码登录 void on_loginPushButton_clicked(); void showWeiChatWindow();private: Ui::LoginDialog *ui; MainWindow *weiChatWindow; QDomDocument mydoc; void keyPressEvent(QKeyEvent *event);};#endif // LOGINDIALOG_H

3. .cpp部分

LoginDialog.cpp

#include "logindialog.h"#include "ui_logindialog.h"LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LoginDialog){ ui->setupUi(this); ui->pwdLineEdit->setFocus();// setFocus为对焦点,使光标移到此处}LoginDialog::~LoginDialog(){ delete ui;}void LoginDialog::on_loginPushButton_clicked(){ showWeiChatWindow();}void LoginDialog::showWeiChatWindow(){ QFile file("userlog.xml"); mydoc.setContent(&file); QDomElement root = mydoc.documentElement(); if (root.hasChildNodes()) { QDomNodeList userList = root.childNodes(); bool exist = false; for (int i = 0; i < userList.count(); i++) { QDomNode user = userList.at(i); QDomNodeList record = user.childNodes(); QString uname = record.at(0).toElement().text(); QString pword = record.at(1).toElement().text(); if (uname == ui->usrLineEdit->text()) { exist = true; if (!(pword == ui->pwdLineEdit->text())) { QMessageBox::warning(0, QObject::tr("提示"), "口令错!请重新输入。"); ui->pwdLineEdit->clear(); ui->pwdLineEdit->setFocus(); return; } } } if (!exist) { QMessageBox::warning(0, QObject::tr("提示"), "此用户不存在!请重新输入。"); ui->usrLineEdit->clear(); ui->pwdLineEdit->clear(); ui->usrLineEdit->setFocus(); return; } weiChatWindow = new MainWindow(0); weiChatWindow->setWindowTitle(ui->usrLineEdit->text()); weiChatWindow->show(); }}

MD5加密版

//登录void LoginWidget::on_LoginBtn_clicked(){ showYXWindow();}void LoginWidget::showYXWindow(){ QFile file("userlog.xml"); mydoc.setContent(&file); QDomElement root = mydoc.documentElement(); if (root.hasChildNodes()) { QDomNodeList userList = root.childNodes(); bool exist = false; for (int i = 0; i < userList.count(); i++) { QDomNode user = userList.at(i); QDomNodeList record = user.childNodes(); QString uname = record.at(0).toElement().text(); QString pword = record.at(1).toElement().text(); QString pwdMd5 = strToMd5(ui->PasLine->text()); //QString pwordJie1 = convertMD5(pword); //QString pwordJie2 = convertMD5(pwordJie1); if (uname == ui->usrLine->text()) { exist = true; if (!(pword == pwdMd5)) { QMessageBox::warning(0, QObject::tr("提示"), "口令错!请重新输入。"); ui->PasLine->clear(); ui->PasLine->setFocus(); return; } } } if (!exist) { QMessageBox::warning(0, QObject::tr("提示"), "此用户不存在!请重新输入。"); ui->usrLine->clear(); ui->PasLine->clear(); ui->usrLine->setFocus(); return; } MainWidget *YXWindow = new MainWidget(); //weiChatWindow->setWindowTitle(ui->usrLineEdit->text()); YXWindow->show(); this->close(); }}QString LoginWidget::strToMd5(QString str){ QString strMd5; QByteArray qba; qba = QCryptographicHash::hash(str.toLatin1(),QCryptographicHash::Md5); strMd5.append(qba.toHex()); return strMd5;}QString LoginWidget::convertMD5(QString inStr){ char a[7]; strcpy(a,inStr.toLocal8Bit().data()); qDebug()<key()==Qt::Key_Return) { showYXWindow(); }}

总结

以上是部分Qt关于功能优化的部分,所有相关的Qt界面优化的部分,均在下方专栏——Qt功能优化中,大家如果感兴趣可以进行观看并使用,希望通过这些文章能够使大家的Qt软件更加美观和完美 !!!

另,如果大家有时间的话,也可以在个人主页中的专栏部分,查看我的Qt实战专栏与Qt界面优化专栏哦,里面分别存放有Qt相关的实战软件和相对实用的附属功能,大家感兴趣可以看看(๑>؂<๑)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Qt功能优化:电子钟模板
下一篇:Qt功能优化:Qt语音助手
相关文章

 发表评论

暂时没有评论,来抢沙发吧~