qt登录界面简单制作,是真的保姆级别了!!!

qt登录界面简单制作,是真的保姆级别了!!!

第二周工程创新实践:创建一个窗体,设计用户登录的界面(含有用户名、密码),并实现用户登录的功能,要求用户提交的登录按钮时能获取界面中的用户名、密码数据并与数据库中的数据进行匹配,若用户名,密码正确则登录成功,否则登录失败。
不想看的直接百度网盘吧,但是可以的话还是看一看,绝对是看得懂的
链接:https://pan.baidu.com/s/1NnnVLxBxThazBQojbft_rw
提取码:33qv


前期准备(qt创建和数据库表)

首先开始创建我们的qt:
qt登录界面简单制作,是真的保姆级别了!!!
qt登录界面简单制作,是真的保姆级别了!!!
注意一定要是qmake!qt登录界面简单制作,是真的保姆级别了!!!
qt登录界面简单制作,是真的保姆级别了!!!
然后一直点下一步就可以啦
得到这样的界面就可以啦
qt登录界面简单制作,是真的保姆级别了!!!
在前期我们需要安装一个my sql用于链接我们的数据库,以后看有机会出一个教程不,懒鬼!哈哈哈哈哈哈哈哈哈
如果不想改代码看这里,后面也可以自己来调整代码!!!
我们进入我们的my sql 里面

输入:show databases;

看看有没有这个
qt登录界面简单制作,是真的保姆级别了!!!
没有的话,我们使用,创建一个

创建一个数据库:create database dbtest;

!!!一定要使用

进入数据库:use dbtest(数据库名);

出现这一行小字
qt登录界面简单制作,是真的保姆级别了!!!

使用查看当前数据库的表:show tables;
我们这个qt要用到下面的这个表如果没有就用:create table user(username varchar(8),password varchar(8)); 

qt登录界面简单制作,是真的保姆级别了!!!
我们向里面也添加一点数据

insert into user(username,password) values('user01','abccba');
insert into user(username,password) values('1','21212121');
然后查看表:select * from user (表名);

qt登录界面简单制作,是真的保姆级别了!!!
qt登录界面简单制作,是真的保姆级别了!!!

像my sql数据库个人建议下一个软件来查看,真的方便很多


页面设计

直接点击我们的ui
qt登录界面简单制作,是真的保姆级别了!!!
然后找到这三个控件
标签
qt登录界面简单制作,是真的保姆级别了!!!
输入框
qt登录界面简单制作,是真的保姆级别了!!!
按钮
qt登录界面简单制作,是真的保姆级别了!!!
我的布局
qt登录界面简单制作,是真的保姆级别了!!!
他们的ui名字在选中后都可以在,text那里改
qt登录界面简单制作,是真的保姆级别了!!!


代码

在.pro那里面加一个 sql,我们要连接数据库咩
denglu.pro

QT       += core gui sql
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 += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

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

然后我们就分为连接数据库和验证密码两个部分,所以在.h里面声明我们的bool connectDB();,验证我们用的是信号槽所以就不用声明了
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    bool connectDB();
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

我们的main.cpp不需要更改还是老样子
main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

关键部分来了
mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QMessageBox>
#include <QSqlError>
#include <QDebug>
#include <QSqlQueryModel>
#include <QComboBox>
#include <QSqlQuery>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connectDB();//调用数据库
    //我们点击之后信号的触发
    connect(ui->pushButton,&QPushButton::clicked,this,[=](){

        QSqlQuery query1;
        query1.exec("SELECT * FROM user WHERE username");//选择我们的表
        QVariantList userlista;
        QString usert;
        usert=ui->lineEdit->text();//将我们ui界面输入框的值传递到usert里面
        QString passwdt;
        passwdt=ui->lineEdit_2->text();//将我们ui界面输入框的值传递到passwdt里面
        bool T1=false;//设立判断标志
        while(query1.next()){//这个回遍历数据库的值
        qDebug()<<query1.value(0).toString();//在qt界面显示
        qDebug()<<query1.value(1).toString();//在qt界面显示
        if(query1.value(0).toString()==usert&&query1.value(1).toString()==passwdt){
           T1=true;//判断密码和账号是否一致
        }
        }
        if(T1==true){
            QMessageBox::information(this, "成功", "登陆成功");
        }
            else { QMessageBox::information(this, "警告", "用户名或密码错误");}
         query1.execBatch();//再次循环,没有这个你的按钮按一次就没有用了
           });

}
bool MainWindow::connectDB(){
   QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
   db.setPort(3306);//你的地址
   db.setHostName("localhost");
   db.setUserName("root");//你的my sql的账号
   db.setPassword("123456");//你进去时候输入的密码
   db.setDatabaseName("dbtest"); //数据库名

   if(!db.open()){
          QMessageBox::critical(this,"数据库打开失败",db.lastError().text());
          return false;
      }
      else {
          return true;
      }
   }
MainWindow::~MainWindow()
{
    delete ui;
}

问题

数据库问题:
qt登录界面简单制作,是真的保姆级别了!!!
驱动失败(你要看看你有没有安装好一个.dll的资源)
添加链接描述
评论,私发

qt登录界面简单制作,是真的保姆级别了!!!

数据库失败(简单的来说就是没有找到你的my sql,你就要看看你dbtest有没有)
qt登录界面简单制作,是真的保姆级别了!!!
密码失败(就是密码错了)
qt登录界面简单制作,是真的保姆级别了!!!

数库库主机失败(QSqlDatabase db=QSqlDatabase::addDatabase(“QMYSQL”);
db.setPort(3306);这一坨东西)

名字问题
qt登录界面简单制作,是真的保姆级别了!!!像这个就是没有找到你输入框的名字,我们单机选中之后
qt登录界面简单制作,是真的保姆级别了!!!
qt登录界面简单制作,是真的保姆级别了!!!
这个就是的啦!把这个复制上去

就到这里结束啦,感谢每一次的喜欢

爱你呦!

上一篇:【Qt】 猜数字游戏


下一篇:QT中使用QWebEngineView和QWebChannel与HTML+JS进行互操作