300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Qt 登录窗口跳转主窗口

Qt 登录窗口跳转主窗口

时间:2022-09-27 19:11:59

相关推荐

Qt 登录窗口跳转主窗口

登录模块实现

把用户密码信息存储在xml文件里,通过读取xml文件实现登录功能。

注:需要在.pro文件添加xmlQT += core gui xml

loginfo.xml文件信息如下:

登录窗口,如下图:

代码

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;};#endif // MAINWINDOW_H

loginwidget.h

#ifndef LOGINWIDGET_H#define LOGINWIDGET_H#include "mainwindow.h"#include <QWidget>#include <QMessageBox>#include <QDomDocument>#include <QFile>#include <QDebug>namespace Ui {class LoginWidget;}class LoginWidget : public QWidget{Q_OBJECTpublic:explicit LoginWidget(QWidget *parent = 0);~LoginWidget();public:void showMainWindow();private slots:void on_loginBtn_clicked();private:Ui::LoginWidget *ui;//指向主窗口的指针MainWindow *mainWindow;//全局变量用于获取XML中的DOM对象QDomDocument mydoc;};#endif // LOGINWIDGET_H

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);}MainWindow::~MainWindow(){delete ui;}

loginwidget.cpp

#include "loginwidget.h"#include "ui_loginwidget.h"QString xmlpath = "./xml/loginfo.xml"; //XML文件路径LoginWidget::LoginWidget(QWidget *parent) :QWidget(parent),ui(new Ui::LoginWidget){ui->setupUi(this);this->setWindowTitle(tr("登录"));//输入密码框隐藏密码ui->passwordEdit->setEchoMode(QLineEdit::Password);}LoginWidget::~LoginWidget(){delete ui;}//实现登录验证功能void LoginWidget::showMainWindow(){QFile file(xmlpath); //创建XML文件对象mydoc.setContent(&file); //将XML对象赋给QdomDocument类型的Qt文档句柄QDomElement root = mydoc.documentElement(); //获取XML文档的DOM根元素if(root.hasChildNodes()){QDomNodeList userList = root.childNodes(); //获取根元素的全部子节点bool exist = false; //指示用户是否存在for(int i = 0; i < userList.count(); i++){QDomNode user = userList.at(i); //根据当前索引i获取用户节点元素QDomNodeList record = user.childNodes(); //该用户的全部属性元素//解析出用户名及密码QString uname = record.at(0).toElement().text(); //"user1","user2"QString pword = record.at(1).toElement().text(); //"password1","password2"if(uname == ui->userNameEdit->text()){exist = true; //用户存在if(!(pword == ui->passwordEdit->text())){QMessageBox::warning(0, QObject::tr("failed"), "密码错误,请重新输入!");ui->passwordEdit->clear();ui->passwordEdit->setFocus();return;}}} //forif(!exist){QMessageBox::warning(0, QObject::tr("failed"), "此用户不存在,请重新输入!");ui->userNameEdit->clear();ui->passwordEdit->clear();ui->userNameEdit->setFocus();return;}//用户存在且密码验证通过mainWindow = new MainWindow(0);mainWindow->setWindowTitle(tr("主窗口"));mainWindow->show(); //显示主窗口} //if}void LoginWidget::on_loginBtn_clicked(){//根据验证结果判断是否进入主窗口showMainWindow();}

main.cpp

#include "mainwindow.h"#include "loginwidget.h"#include <QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);// MainWindow w;// w.show();LoginWidget w;w.show();return a.exec();}

程序运行结果

用户名不存在:

用户名存在,密码输入错误:

用户名,密码输入正确,点击登录跳转到主窗口:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。