QT 简单的登录界面

这篇具有很好参考价值的文章主要介绍了QT 简单的登录界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、描述
有登录界面、注册界面,用到sqlite数据库保存账号和密码,界面还没有布局美化等,只实现了最基本的功能。

二、界面及功能介绍
1、登录界面QT 简单的登录界面2、注册界面QT 简单的登录界面
3、主界面
没想好弄啥功能,于是就弄了两个按钮。
QT 简单的登录界面
4、文件结构
QT 简单的登录界面

三、代码

1.login.pro

QT       += core gui
QT       += sql widgets

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    general.cpp \
    logindialog.cpp \
    logondialog.cpp \
    main.cpp \
    widget.cpp

HEADERS += \
    general.h \
    logindialog.h \
    logondialog.h \
    widget.h

FORMS += \
    logindialog.ui \
    logondialog.ui \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

2.general.h

#ifndef GENERAL_H
#define GENERAL_H

#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
#include <QSqlQuery>
#include <iostream>
#include <QMessageBox>


QSqlQuery connect_sqlite();
void sql_close();


#endif // GENERAL_H

3.logindialog.h

#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H

#include <QDialog>
#include "logondialog.h"
#include "ui_logondialog.h"

namespace Ui {
class LoginDialog;
}

class LoginDialog : public QDialog
{
    Q_OBJECT

public:
    explicit LoginDialog(QWidget *parent = nullptr);
    ~LoginDialog();

    LogonDialog logondialog;


private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

private:
    Ui::LoginDialog *ui;
};

#endif // LOGINDIALOG_H

4.logondialog.h

#ifndef LOGONDIALOG_H
#define LOGONDIALOG_H

#include <QDialog>
#include "general.h"

namespace Ui {
class LogonDialog;
}

class LogonDialog : public QDialog
{
    Q_OBJECT

public:
    explicit LogonDialog(QWidget *parent = nullptr);
    ~LogonDialog();

public:
    Ui::LogonDialog *ui;
private slots:
    void on_pushButton_2_clicked();
    void on_pushButton_clicked();
};

#endif // LOGONDIALOG_H

5.widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include "logindialog.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_2_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

6.general.cpp

#include "general.h"
QSqlDatabase db;
QSqlQuery connect_sqlite()
{
    //验证数据库连接是否存在,不存在就创建一个
    if(QSqlDatabase::contains("first"))
    {
        db = QSqlDatabase::database("first");
    }
    else
    {
        //用的是sqlite数据库
        db = QSqlDatabase::addDatabase("QSQLITE","first");
        db.setDatabaseName("QtQq.db");//设置数据库名称,若不存在自动创建一个
        db.setUserName("zhanglinghua");//设置数据库账号,不用也没啥问题
        db.setPassword("123456");      //设置数据库密码,不用也没啥问题
    }
    bool a = db.open();            //打开数据库,必须打开才能进行增删查改的操作
    if(!a)
    {
        qDebug()<<"数据库打开失败";
        exit(100);
    }
    else
    {
        qDebug()<<"数据库打开成功";
    }
    QSqlQuery sql_query(db);
    return sql_query;
}

void sql_close()
{
    db.close();
}

7.logindialog.cpp

#include "logindialog.h"
#include "ui_logindialog.h"

LoginDialog::LoginDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::LoginDialog)
{
    ui->setupUi(this);
}

LoginDialog::~LoginDialog()
{
    delete ui;
}

//验证登录函数
void LoginDialog::on_pushButton_clicked()
{
    QSqlQuery sql_query = connect_sqlite();
    QString user = ui->lineEdit->text();//获取账号
    QString pwd = ui->lineEdit_2->text();//获取密码

    //qDebug()<<user<<pwd;

    //先验证账号是否存在,若存在,再验证密码
    QString user_sql = QString("select user from users;");
    sql_query.exec(user_sql);
    bool flag=0;
    while(sql_query.next())
    {
        if(sql_query.value(0).toString()==user)
        {
            flag=1;
        }
    }
    if(flag==1)
    {
        QString sql = QString("select passwd from users where user = '%1'").arg(user);//验证账号密码
        sql_query.prepare(sql);
        sql_query.exec();
        QString sql_pwd;
        while(sql_query.next())
        {
            sql_pwd = sql_query.value(0).toString();
            qDebug()<<"密码"<<sql_pwd;
        }

        if(pwd == sql_pwd)
        {
            qDebug()<<"登录成功";
            accept();
        }
        else
        {
            QMessageBox::information(this,QObject::tr("登录提示"),QObject::tr("账号或密码错误"),QMessageBox::Ok,QMessageBox::Ok);
        }
    }
    else
    {
        QMessageBox::information(this,QObject::tr("登录提示"),QObject::tr("未发现该账号,请先注册。"),QMessageBox::Ok,QMessageBox::Ok);
    }


}

//关闭注册窗口
void LoginDialog::on_pushButton_2_clicked()
{
    close();
}


//显示注册窗口
void LoginDialog::on_pushButton_3_clicked()
{
    LogonDialog lgo;
    lgo.setWindowTitle("注册");
    lgo.exec();
}

//忘记密码函数
void LoginDialog::on_pushButton_4_clicked()
{
    QMessageBox::information(this,QObject::tr("密码"),QObject::tr("忘记了也没办法,大哥重新注册一个吧。"),QMessageBox::Ok,QMessageBox::Ok);
}

8.logondialog.cpp

#include "logondialog.h"
#include "ui_logondialog.h"

LogonDialog::LogonDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::LogonDialog)
{
    ui->setupUi(this);
}

LogonDialog::~LogonDialog()
{
    delete ui;
}

//注册功能实现函数
void LogonDialog::on_pushButton_2_clicked()
{

    QString user = ui->lineEdit->text();
    QString pwd = ui->lineEdit_2->text();
    QString enter_pwd = ui->lineEdit_3->text();
    if(user==""||pwd==""||enter_pwd=="")
    {
        QMessageBox::information(this,QObject::tr("注册提示"),QObject::tr("输入不能为空,请重新输入!"),QMessageBox::Ok,QMessageBox::Ok);
    }
    else
    {
         QSqlQuery sql_query=connect_sqlite();
         QString logon_sql = QString("select user from users;");
         sql_query.exec(logon_sql);
         while(sql_query.next())
         {
             if(sql_query.value(0).toString()==user)
             {
                 QMessageBox::information(this,QObject::tr("注册提示"),QObject::tr("未能注册,账号已存在,请更换账号后重新尝试注册!"),QMessageBox::Ok,QMessageBox::Ok);
             }
         }
         if(pwd!=enter_pwd)
         {
             QMessageBox::information(this,QObject::tr("注册提示"),QObject::tr("未能注册,两次密码输入不一致,请重新输入!"),QMessageBox::Ok,QMessageBox::Ok);
         }
         else
         {
             QString insert = QString("insert into users values('%1','%2');").arg(user).arg(pwd);

             if(sql_query.exec(insert))
             {
                 QMessageBox::information(this,QObject::tr("注册提示"),QObject::tr("注册成功!"),QMessageBox::Ok,QMessageBox::Ok);
             }
             else
             {
                 QMessageBox::information(this,QObject::tr("注册提示"),QObject::tr("未能注册,请尝试重新注册!"),QMessageBox::Ok,QMessageBox::Ok);
             }
         }

         sql_close();
    }
}

//关闭注册窗口
void LogonDialog::on_pushButton_clicked()
{
    close();
}

9.main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QStringList dr = QSqlDatabase::drivers();//查看有哪些数据驱动,原本想用MySQL数据库,但是我qt里没驱动,自己捣鼓了半天也没成功,就直接用sqlite数据库了
    foreach(QString driver,dr)
        qDebug()<<driver;


    QString sql = "create table users(user varchar(40) primary key,passwd varchar(40));";
    QString judgmen_table_exist = "select count(*) from users where user = 'z';";
    QSqlQuery sql_query1=connect_sqlite();

    bool flag = sql_query1.exec(judgmen_table_exist);
    if(!flag)
    {
        flag = sql_query1.exec(sql);
        if(flag)
        {
            qDebug()<<"user table create success";
        }
        else
        {
            qDebug()<<"user table create error";
        }
    }
    sql_close();
    LoginDialog logindialog;
    logindialog.setWindowTitle(QObject::tr("登录"));
    if(logindialog.exec()==QDialog::Accepted)
    {
        Widget w;
        w.setWindowTitle(QObject::tr("QtQq"));
        w.show();
        return a.exec();
    }
    else
        return 0;
}

10.widget.cpp文章来源地址https://www.toymoban.com/news/detail-507749.html

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

//重新登录功能实现函数
void Widget::on_pushButton_2_clicked()
{
    close();
    LoginDialog ldg;
    if(ldg.exec()==QDialog::Accepted)
        show();
}

到了这里,关于QT 简单的登录界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT 简单的登录界面

    一、描述 有登录界面、注册界面,用到sqlite数据库保存账号和密码,界面还没有布局美化等,只实现了最基本的功能。 二、界面及功能介绍 1、登录界面 2、注册界面 3、主界面 没想好弄啥功能,于是就弄了两个按钮。 4、文件结构 三、代码 1.login.pro 2.general.h 3.logindialog.h 4

    2024年02月11日
    浏览(29)
  • QT day1简单登录界面

    widget.cpp文件代码:  widget.h文件

    2024年02月13日
    浏览(34)
  • Postman下载安装注册登录简介&登录后界面简介

    如今,Postman的开发者已超过1000万(来自官网),选择使用Postman的原因如下: 1、简单易用 - 要使用Postman,你只需登录自己的账户,只要在电脑上安装了Postman应用程序,就可以方便地随时随地访问文件。 2、使用集合 - Postman允许用户为他们的API调用创建集合。每个集合可以创建子

    2023年04月14日
    浏览(43)
  • Java登录注册界面v1.0

    登录注册界面 要求实现功能:登录、注册。 注册: 1)检查是否注册过; 2)检查字符串的合法性; 3)收集数据、存储实例。 登录: 1)检查是否注册过; 2)检查是否登录过; 3)检查验证密码; 4)登录成功,返回相关信息。 下面展示并分析登录注册界面v1.0的Java实现代

    2024年02月06日
    浏览(32)
  • 一个好看美观的登录注册界面的实现

    序言:之前介绍那个博客,然后自己搞了这个界面。最近有人和我要,把代码给大家贴出来,提供参考。 首先是这个界面哈 然后呢,有那个javascript,就是绑定的登录注册时写在外部文件中的。我给大家贴上。 注意啊上面一个登录一个注册。 这里同样给出后端代码,就是我们

    2024年02月11日
    浏览(45)
  • HTML 实现好看的登录注册界面(一)

    2024年02月09日
    浏览(50)
  • Android学习(一)--用户登录注册界面(界面跳转+背景音乐)

    目录 1.功能要求 2.功能实现流程图 3.功能演示 4.界面与功能  4.1登录界面 4.1.1界面展示 4.1.2登录界面功能简介 4.1.3界面代码 4.1.4登录按钮点击事件 4.1.5退出按钮点击事件  4.1.6背景音乐点击事件 4.1.7记住密码 5.Java源码 (1)三个界面布局,体现文本框、编辑框、单选按钮、复

    2024年02月05日
    浏览(46)
  • 基于Java的界面开发【用户注册登录】

    首先要清楚一个界面由哪些部分组成:         1、可视化部分:  窗体、标签、菜单、选项卡、按钮......         2、元素规则部分:  颜色、尺寸、字体、布局         3、内容部分:  文字、图片 其次是所需代码库(java类库):   java.awt(元素规则类比较多)

    2024年02月06日
    浏览(36)
  • 用Android Studio编写一个登录界面和注册界面并可以跳转

    下面是使用 Android Studio 编写一个简单的登录界面和注册界面,并实现跳转的示例代码。 首先,在 res/layout 目录下创建一个名为 activity_login.xml 的布局文件,作为登录界面的布局: 接下来,在 res/layout 目录下创建一个名为 activity_register.xml 的布局文件,作为注册界面的布局:

    2024年04月09日
    浏览(82)
  • Android实现qq登录注册和好友列表界面

    学习Android已经有一个多月了,老师留了实现qq登陆注册和好友列表的作业,要求: 设计登录界面,注册界面和好友列表界面。 在登录界面输入用户名“ admin ”,密码“ abc123 ”后,判断用户名和密码是否正确。 若用户名或密码错误则给出相应提示:“用户名或密码输入有误

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包