9.25day5---Qt

登录页面设计,建立用户注册以及登录的数据库,数据库保存用户名和密码

(ps:本篇只完成了登录功能,其他功能,请见下篇)

 再次注册则失败:

代码如下: 

头文件:

登录后聊天室界面(头文件):

#ifndef LT_JM_H
#define LT_JM_H

#include <QWidget>

namespace Ui {
class lt_jm;
}

class lt_jm : public QWidget
{
    Q_OBJECT



public slots:
    void jump_slot();         //接收跳转信号的槽函数

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

private:
    Ui::lt_jm *ui;
};

#endif // LT_JM_H

 注册头文件:

#ifndef ZC_JM_H
#define ZC_JM_H

#include <QWidget>
#include <QMessageBox>
#include <QSqlQuery>

namespace Ui {
class zc_jm;
}

class zc_jm : public QWidget
{
    Q_OBJECT

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



public slots:
    void jump_slot();         //接收跳转信号的槽函数

private slots:
    void on_pushButton_clicked();

private:
    Ui::zc_jm *ui;
};

#endif // ZC_JM_H

 ui界面头文件:

#ifndef WIDGET_H
#define WIDGET_H

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

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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


signals:
    void jump();           //自定义跳转信号函数
    void jump1();


private slots:
    void on_dl_clicked();

    void on_zc_clicked();

    void on_tc_clicked();

private:
    Ui::Widget *ui;
    lt_jm *jm2;             //定义另一个界面的指针
    zc_jm *jm3;             //定义另一个界面的指针
    QSqlDatabase db;            //定义一个数据库的类对象
};
#endif // WIDGET_H

功能文件:

聊天室功能函数:

#include "lt_jm.h"
#include "ui_lt_jm.h"

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

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

void lt_jm::jump_slot()
{
    this->show();            //将自己界面进行展示
}

注册功能函数:

#include "zc_jm.h"
#include "ui_zc_jm.h"

zc_jm::zc_jm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::zc_jm)
{
    ui->setupUi(this);
    this->setFixedSize(500,450);     //设置固定尺寸


}

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

void zc_jm::jump_slot()
{
    this->show();            //将自己界面进行展示
}

void zc_jm::on_pushButton_clicked()
{
    //获取ui界面中要录入的数据
    QString id = ui->lineEdit->text();
    QString pwd = ui->lineEdit_2->text();

    //要确保每个编辑器中都有数据
    if(id.isEmpty() || pwd.isEmpty())
    {
        QMessageBox::information(this,"提示","请将信息填写完整");
        return;
    }

    //准备sql语句
    QString sql = QString("insert into user_pwd(ID,password) "
                  "values('%1','%2')").arg(id).arg(pwd);
    //准备语句执行者
    QSqlQuery querry;
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"失败", "添加失败");
        return;
    }else
    {
        QMessageBox::information(this,"成功", "添加成功");
    }
}

 ui界面功能函数:

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setFixedSize(500,450);     //设置固定尺寸
    this->setWindowTitle("My QQ");               //设置窗口标题
    this->setWindowIcon(QIcon(":/tupian/OIP-C (1).jpg"));//设置窗口图标
    this->setStyleSheet("background-color:skyblue;");              //设置样式表
    this->setWindowOpacity(1); //设置窗口透明度

    ui->dl->setIcon(QIcon(":/tupian/1.jpg"));//设置按钮图标
    ui->zc->setIcon(QIcon(":/tupian/OIP-C (6).jpg"));
    ui->tc->setIcon(QIcon(":/tupian/OIP-C (5).jpg"));
    ui->dl->setStyleSheet("background-color:white; border-radius:10px;");      //设置样式表
    ui->zc->setStyleSheet("background-color:white; border-radius:10px;");      //设置样式表
    ui->tc->setStyleSheet("background-color:white; border-radius:10px;");      //设置样式表

    ui->pwd->setEchoMode(QLineEdit::Password);        //设置回显模式

    ui->logo->setPixmap(QPixmap(":/tupian/OIP-C (4).jpg"));       //设置图片
    ui->logo->setScaledContents(true);                      //设置内容自适应
    ui->yhm_t->setPixmap(QPixmap(":/tupian/OIP-C.jpg"));
    ui->yhm_t->setScaledContents(true);
    ui->pwd_t->setPixmap(QPixmap(":/tupian/OIP-C (2).jpg"));
    ui->pwd_t->setScaledContents(true);

    if(!db.contains("mydatabase.db"))
    {
        db = QSqlDatabase::addDatabase("QSQLITE");//添加一个数据库,调用该类中的静态成员函数addDatabase
        db.setDatabaseName("mydatabase.db");//设置数据库的名字
    }
    if(!db.open())    //打开数据库
    {
        QMessageBox::information(this,"失败","数据库打开失败");
        return;
    }
    QString sql = "create table if not exists user_pwd("           //创建表
                  "ID varchar(16) primary key,"                   //账号,主键
                  "password varchar(16))";                       //密码
    QSqlQuery querry;                                  //准备语句执行者
    if(!querry.exec(sql))    //让语句执行者执行sql语句
    {
        QMessageBox::information(this, "失败", "创建表失败");
        return;
    }



    jm2 = new lt_jm;            //给另一个界面实例化空间
    connect(this,&Widget::jump,jm2,&lt_jm::jump_slot);//将当前界面的信号,与s1界面的槽函数进行连接
    jm3 = new zc_jm;            //给另一个界面实例化空间
    connect(this,&Widget::jump1,jm3,&zc_jm::jump_slot);//将当前界面的信号,与s1界面的槽函数进行连接
}

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


void Widget::on_dl_clicked()
{
    QString sql = "select * from stu_info";
    QSqlQuery querry;
    if(!querry.exec(sql))//执行sql语句
    {
        QMessageBox::information(this,"提示","显示失败");
        return;
    }
    int i = 0;               //记录行数
    while(querry.next())
    {
        //在该循环中,querry对象表示的是当前的记录
        //可以使用成员函数: QSqlRecord record() const;获取当前记录
        //可以使用QSqlRecord成员函数,count():获取当前记录中的项数
        //可以使用QSqlRecord成员函数,value(index):获取当前记录中第index项的值



        //遍历每条记录中的每一项的内容
        for(int j=0; j<querry.record().count(); j++)
        {
            //ui->tableWidget->setItem(i,j, new QTableWidgetItem(querry.record().value(j).toString()));
        }




        i++;         //继续遍历下一条记录
    }
    emit jump();
    this->hide();        //将当前界面隐藏
}

void Widget::on_zc_clicked()
{
    emit jump1();
    this->hide();        //将当前界面隐藏

}

void Widget::on_tc_clicked()
{

}

测试文件:

#include "widget.h"

#include <QApplication>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值