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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: qt登录界面简单制作,是真的保姆级别了!!!

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

第二周工程创新实践:创建一个窗体,设计用户登录的界面(含有用户名、密码),并实现用户登录的功能,要求用户提交的登录按钮时能获取界面中的用户名、密码数据并与数据库中的数据进行匹配,若用户名,密码正确则登录成功,否则登录失败。

不想看的直接百度网盘吧,但是可以的话还是看一看,绝对是看得懂的

链接:https://pan.baidu.com/s/1NnnVLxBxThazBQojbft_rw

提取码:33qv


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

首先开始创建我们的qt:

注意一定要是qmake!

然后一直点下一步就可以啦

得到这样的界面就可以啦

在前期我们需要安装一个my sql用于链接我们的数据库,以后看有机会出一个教程不,懒鬼!哈哈哈哈哈哈哈哈哈

如果不想改代码看这里,后面也可以自己来调整代码!!!

我们进入我们的my sql 里面

输入:show databases;

看看有没有这个

没有的话,我们使用,创建一个

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

!!!一定要使用

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

出现这一行小字

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

我们向里面也添加一点数据

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

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


页面设计

直接点击我们的ui

然后找到这三个控件

标签

输入框

按钮

我的布局

他们的ui名字在选中后都可以在,text那里改


代码

在.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;
}

问题

数据库问题:

驱动失败(你要看看你有没有安装好一个.dll的资源)

添加链接描述

评论,私发

数据库失败(简单的来说就是没有找到你的my sql,你就要看看你dbtest有没有)

密码失败(就是密码错了)

数库库主机失败(QSqlDatabase db=QSqlDatabase::addDatabase(“QMYSQL”);

db.setPort(3306);这一坨东西)

名字问题

像这个就是没有找到你输入框的名字,我们单机选中之后

这个就是的啦!把这个复制上去

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

爱你呦!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
JSON Linux 数据安全/隐私保护
Qt实现菠菜登录界面
Qt实现菠菜登录界面
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
169 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
70 0
|
2月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
2月前
|
3月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
121 2
Qt开发网络嗅探器02
Qt开发网络嗅探器02
|
3月前
|
存储 运维 监控
Qt开发网络嗅探器01
Qt开发网络嗅探器01
|
3月前
|
网络协议 容器
Qt开发网络嗅探器03
Qt开发网络嗅探器03
|
3月前
【qt】多窗口开发
【qt】多窗口开发
51 0