服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - QT实现用户登录注册

QT实现用户登录注册

2022-12-24 15:40阿宁(xin)。 C/C++

这篇文章主要为大家详细介绍了QT实现用户登录注册,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文为大家分享了QT实现用户登录注册的具体代码,供大家参考。

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

//窗口设置
#include <QStyle>

//数据库连接
#include <QtSql/QSqlQuery>//数据库操作函数
#include <QtSql/QSqlError>//输出错误信息

#include <QMessageBox>//
#include <QSettings>//读写配置文件
#include <QtDebug>

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

//窗口设置
    //设置窗口不显示标题,无边框
     setWindowFlags(Qt::Window|Qt::FramelessWindowHint);

//设置最小化、关闭按钮

     //获取最小化、关闭按钮图标

      QPixmap minPix = style()->standardPixmap(QStyle::SP_TitleBarMinButton);
      QPixmap closePix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton);

      ui->mintoolButton->setIcon(minPix);
      ui->closetoolButton->setIcon(closePix);
      ui->mintoolButton->setStyleSheet("bakground-color:tranparent:");
      ui->closetoolButton->setStyleSheet("bakground-color:tranparent:");

      connect(ui->mintoolButton,&QPushButton::clicked,this,&Widget::showMinimized);
      connect(ui->closetoolButton,&QPushButton::clicked,this,&Widget::close);

//数据库连接
      //连接数据库
         //查看当前支持的数据库的驱动
          qDebug()<<QSqlDatabase::drivers();

          QSqlDatabase DB;//创建一个数据库的文件
         //加载数据库的文件
          QString aFile="./dataBase.db";
          if(aFile.isEmpty())
          {
              qDebug()<<" 数据库文件加载失败 " ;
              return ;
          }
          //打开数据库
          DB=QSqlDatabase::addDatabase("QSQLITE");//创建QSQLITE数据库连接
          DB.setDatabaseName(aFile); //数据库名
          if(!DB.open())
          {
              //没有数据库文件则创建文件
              qDebug()<<"数据库文件打开失败";
              qDebug()<<DB.lastError().text();//输出错误信息
           }
          qDebug()<< " 打开数据库文件成功 " ;

      //从配置文件中读取用户名和密码:
          QSettings setting("config.ini",QSettings::IniFormat);
          QString account = setting.value("section/account").toString();
          QString password = setting.value("section/password").toString();
          ui->accountEdit->setText(account);
          ui->passwordEdit->setText(password);

         //用户注册,向数据库插入数据
          connect(ui->registerButton,&QPushButton::clicked,this,[=](){

          //接受用户输入:
              QString account = ui->accountEdit->text();//用户账号
              QString password = ui->passwordEdit->text();//密码

          //创建自己需要使用的表格
              QSqlQuery query(DB);
              if(!query.exec("create table user(account varchar(255) primary key, password varchar(255))"))
              {
                  qDebug() << "Error: Fail to create table."<< query.lastError();
              }
              else
              {
                  qDebug() << "Table created!";
              }


          //插入数据
              QString qs = QString("insert into user(account,password) values('%1','%2')")
                      .arg(account).arg(password);

              if(query.exec(qs)) //如果插入成功
              {
                  QMessageBox::information(this,"注册","注册成功");
              }
              else
              {
                  QMessageBox::information(this,"注册","注册失败");
                  qDebug()<<query.lastError().text();//输出错误信息
                  //return;
              }

          //查看数据
              //查看数据库中有的表格的名字
              qDebug()<<"查看数据库中所有的表:";
              QStringList str_table=DB.tables();
              qDebug()<<str_table;
              //查询数据库中的数据
              qDebug()<<"查看数据库中数据";
              query.prepare ("SELECT * FROM user");
              query.exec();
              while(query.next())
              {
                  qDebug()<<QString("account:%1,password:%2").
                            arg(query.value("account").toString()).arg(query.value("password").toString());
              }

          });

      //用户登录:查询数据

          connect(ui->loginButton,&QPushButton::clicked,this,[=](){

              //接受用户输入:
               QString account = ui->accountEdit->text();//用户账号
               QString password = ui->passwordEdit->text();//密码

              //查询数据
               QSqlQuery query;//操作数据库
               QString qs = QString("select * from user where account ='%1' and password='%2'").
                       arg(account).arg(password);

               if(!query.exec(qs))//如果没有查到记录
               {
                   qDebug() << query.lastError().text();//输出错误信息
                   return;
               }

               //获取查询的数据
               if(query.next())//获取到数据
               {
                   QMessageBox::information(this,"登录","登录成功");

                   connect(tw,&TestWidget::testSigna,this,&Widget::show);//显示主窗口

                   //在配置文件中记录用户账号密码
                   if(ui->checkBox->isChecked())//选中,也就是用户已经登录
                   {
                       //创建配置文件
                       QSettings setting("config.ini",QSettings::IniFormat);//配置文件在工程目录下
                       //把用户账号密码写到配置文件中
                       setting.beginGroup("section");//节开始
                       setting.setValue("account",account);
                       setting.setValue("password",password);
                       setting.endGroup();//结束
                   }
               }
               else
               {
                   QMessageBox::information(this,"登录","登录失败");
               }
          });

}

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

#按钮的ui实现

QT实现用户登录注册

QT实现用户登录注册

结果

QT实现用户登录注册

QT实现用户登录注册

QT实现用户登录注册

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_44423388/article/details/124202373

延伸 · 阅读

精彩推荐
  • C/C++C语言使用rand函数生成随机数

    C语言使用rand函数生成随机数

    这篇文章介绍了C语言使用rand函数生成随机数的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    流浪孤儿11262022-03-10
  • C/C++Clion2020.2.x最新激活码破解版附安装教程(Mac Linux Windows)

    Clion2020.2.x最新激活码破解版附安装教程(Mac Linux Windows)

    Clion2020增加了很多新特性,修复了大量bug,大大提高了开发效率。这篇文章主要介绍了Clion2020.2.x最新激活码破解版附安装教程(Mac Linux Windows),需要的朋友可...

    中关村老大爷7512021-10-07
  • C/C++C语言进阶:指针的进阶(4)

    C语言进阶:指针的进阶(4)

    这篇文章主要介绍了C语言指针详解及用法示例,介绍了其相关概念,然后分享了几种用法,具有一定参考价值。需要的朋友可以了解下...

    AKA你的闺蜜8372021-12-28
  • C/C++Linux中利用c语言删除某个目录下的文件

    Linux中利用c语言删除某个目录下的文件

    这篇文章主要给大家介绍了Linux中利用c语言删除某个目录下文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学...

    kakashi03099732021-10-19
  • C/C++Dev C++ 安装及使用方法(图文教程)

    Dev C++ 安装及使用方法(图文教程)

    Dev C++ 是一款非常好用,简约的C/C++开发工具,本文主要介绍了Dev C++ 安装及使用方法(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工...

    曾亲桂林5372022-12-21
  • C/C++探讨数组与字符串输入的问题(C++版)

    探讨数组与字符串输入的问题(C++版)

    本文对C++数组与字符串输入的问题进行了探讨,需要的朋友可以参考下...

    liam219910072021-03-04
  • C/C++C++实现KDTree 附完整代码

    C++实现KDTree 附完整代码

    这篇文章主要介绍了C++实现KDTree的代码详解,包括kdTree概念介绍及分割的作用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参...

    xiuzhublog7512021-11-25
  • C/C++用c语言编写一个通讯录代码详解

    用c语言编写一个通讯录代码详解

    大家好,本篇文章主要讲的是用c语言实现一个通讯录代码详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下...

    youzhi青年11872022-09-05