QT-day5

news/2025/2/9 5:47:07 标签: qt

1、添加注册功能到数据库

头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMessageBox>      //消息对话框类头文件
#include <QDebug>
#include <QPushButton>
#include <QSqlDatabase>     //数据库管理类
#include <QSqlQuery>        //执行sql语句的类
#include <QSqlRecord>       //数据库记录的类
#include "second.h"


QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

signals:
    void my_signal();       //定义一个无参无返回值的信号函数
    void jump();            //自定义跳转信号函数

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

private slots:

    void my_slot();         //自定义无参无返回值槽函数

    void on_dengBtn_clicked();

    void on_quBtn_clicked();

    void on_zhuBtn_clicked();

private:
    Ui::Widget *ui;

    second *s1;

    QSqlDatabase db;        //定义一个数据库的类对象
};
#endif // WIDGET_H

源文件

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    s1 = new second;
    //使用qt5版本,把登录、注册、取消按钮连接
    connect(ui->dengBtn, &QPushButton::clicked, this, &Widget::my_slot);
    connect(ui->quBtn, &QPushButton::clicked, this, &Widget::my_slot);
    connect(ui->zhuBtn, &QPushButton::clicked, this, &Widget::my_slot);
    connect(this, &Widget::jump, s1, &second::jump_slot);

    this->setWindowTitle("灵能事务所");     //设置窗口标题
    this->setWindowIcon(QIcon(":/pic/biao.jpg"));

    //判断自己的数据库对象中是否包含了要处理的数据库,如果没有包含,则添加一个数据库,如果包含了,就可以打开
    if(!db.contains("mydatabase.db"))
    {
        //添加一个数据库,调用该类中的静态成员函数addDatabase

        db = QSqlDatabase::addDatabase("QSQLITE");

        //设置数据库的名字
        db.setDatabaseName("mydatabase.db");
    }

    //此时已经有一个名为mydatabase.db的数据库
    // 打开数据库
    if(!db.open())
    {
        QMessageBox::information(this, "失败", "打开失败");
        return;
    }

    //需要使用sql语句进行创建表的操作
    //1、准备sql语句
    QString sql = "create table if not exists stu_info("    //创建表
                  "zczh integer primary key,"               //注册账号,主键
                  "zcmm integer)";                         //注册密码
    //准备语句执行者
    QSqlQuery querry;

    //让语句执行者执行sql语句

    if(!querry.exec(sql))
    {
        QMessageBox::information(this, "失败", "创建表失败");
        return;
    }
}

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

void Widget::my_slot()
{
    //emit jump();
}

//登录按钮对应的槽函数
void Widget::on_dengBtn_clicked()
{
    //传入账号密码
    QString zczh = ui->lineEdit1->text();
    QString zcmm = ui->lineEdit2->text();

    QString sql = QString("select * from stu_info where zczh = '%1' and zcmm = '%2' ").arg(zczh).arg(zcmm);

    //准备语句执行者
    QSqlQuery querry;
    if(!querry.exec(sql))
    {

        //1、调用构造函数实例化对象
        QMessageBox::information(this, "失败", "登录失败");


        //3、对结果进行判断
        if(QMessageBox::Ok)
        {
            ui->lineEdit1->clear();
            ui->lineEdit2->clear();
            qDebug()<<"继续登录";
        }else if(QMessageBox::Cancel)
        {
            close();
        }
    }else
    {
        //1、调用构造函数实例化对象
        QMessageBox::information(this, "成功", "登录成功");

        //3、对结果进行判断
        if(QMessageBox::Ok)
        {
            emit jump();
        }
    }

}

//取消
void Widget::on_quBtn_clicked()
{
    //1、调用静态函数实例化对象
    int ret = QMessageBox::information(this,              //父组件
                         "问题",              //对话框标题
                         "是否确定退出登录",            //对话框文本内容
                         QMessageBox::Yes | QMessageBox::No,    //对话框提供的按钮
                         QMessageBox::No);          //默认选中的按钮

    //3、对结果进行判断
    if(ret == QMessageBox::Yes)
    {
        close();
    }
}

//注册
void Widget::on_zhuBtn_clicked()
{
    //获取ui界面中要录入的数据
    QString zczh = ui->lineEdit1->text();
    QString zcmm = ui->lineEdit2->text();

    //要确保每个编辑器中都有数据
    if(zczh.isEmpty() || zcmm.isEmpty())
    {
        QMessageBox::information(this, "提示", "账号或密码为空,请重新输入");
        return ;
    }

    //准备sql语句
    QString sql = QString("insert into stu_info(zczh, zcmm)"
                  "values('%1', '%2')").arg(zczh).arg(zcmm);

    //准备语句执行者
    QSqlQuery querry;
    if(!querry.exec(sql))
    {
        QMessageBox::information(this, "失败", "注册失败");
        return;
    }else
    {
        QMessageBox::information(this, "成功", "注册成功");
    }
}

ui界面:


http://www.niftyadmin.cn/n/5047869.html

相关文章

牛客网解题之跳台阶

10.3 跳台阶 题目链接 牛客网 题目描述 一只青蛙一次可以跳上 1 级台阶&#xff0c;也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 解题思路 当 n 1 时&#xff0c;只有一种跳法&#xff1a; 当 n 2 时&#xff0c;有两种跳法&#xff1a; 跳 n 阶台…

大功率PID控温

#include "rtthread.h" #ifdef FRYER_TEMP_PID //PID控温 #include "pid.h" #include "string.h"#define DBG_TAG "app.pid" #define DBG_LVL DBG_INFO #include <rtdbg.h>/** * PID运算. * U(k)KP*[E(k)-E(k-1)]KI*E(k…

Ubuntu下载

参考文档&#xff1a; 镜像文件&#xff1a;VMware下安装ubuntu 16.04&#xff08;全步骤&#xff09;_vmwaubuntu-16.04.4-desktop-amd64.iso_ST0new的博客-CSDN博客 vmware tools使用安装&#xff1a;VMware——VMware Tools的介绍及安装方法_William.csj的博客-CSDN博客 …

windows 深度学习环境部署

1. 根据显卡配置安装适合的CUDA,查看显卡配置可在显卡控制面板上查看,安装是否成功可通过nvidia-smi查看&#xff1b;注意安装路径 https://developer.nvidia.com/cuda-toolkit-archive 2. 根据cuda安装合适的cudnn&#xff0c;需要注册NVIDIA cuDNN Archive | NVIDIA Devel…

mysql四种事务隔离级别介绍

MySQL事务隔离级别定义了不同事务之间的隔离程度。MySQL标准列表了四个隔离级别&#xff0c;依次为读未提交&#xff08;READ UNCOMMITTED&#xff09;、读已提交&#xff08;READ COMMITTED&#xff09;、可重复读&#xff08;REPEATABLE READ&#xff09;和串行化&#xff08…

leetcode刷题 二维数组 八方向

题目描述 输入&#xff1a;board [[0,1,0],[0,0,1],[1,1,1],[0,0,0]] 输出&#xff1a;[[0,0,0],[1,0,1],[0,1,1],[0,1,0]] 题目分析:就是以二维数组某个元素为中心&#xff0c;寻找周围八个方向的元素&#xff0c;按照题目要求修改二维数组元素返回&#xff1b; 拷贝一份二…

go mod tidy 报错:x509: certificate signed by unknown authority 最佳实践

最近在docker中运行了一个ubuntu20的系统&#xff0c;在上面运行golang程序&#xff0c;使用go mod tidy后报错&#xff1a; tls: failed to verify certificate: x509: certificate signed by unknown authority 如&#xff1a; go: finding module for package google.gol…

Stateflow

文章目录 概述打开 Stateflow 的方法方法一 方法二 概述 Stateflow 是由两个词构成的&#xff0c;State machine&#xff0c;Control flow。 State machine 指的是状态机&#xff0c;即离散状态之间根据不同的条件进行转移。每一个时刻&#xff0c;同一层次下&#xff0c;至少…