基于Qt的登录注册

一、界面设计

打开Qt的工程如下

1.登录界面

2.注册界面

 

3.网络连接界面

4.贪吃蛇小游戏主界面

二、重点代码分析

1.登录

用数据库来存储所需要的数据

QString Currentname; //存储当前的账号

QString CurrentPasswd; //存储当前的密码

int score;//玩贪吃蛇所得分数

//数据库来存储用户信息
void sqlite_Init()
{

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("user.db");
    if(!db.open())
    {
        qDebug()<<"open error";
    }
    //create excle
    QString createsql("create table user(username,password,score);");
    QSqlQuery query;
    if(!query.exec(createsql)){
        qDebug()<<"table create error";
    }
    else{
        qDebug()<<"table create success";
    }
}

点了登录这个按钮后,回去判断输入的密码和账号是否正确

关键代码①:判断输入的数据是否正确--->

QString sql=QString("select * from user where username='%1' and password='%2';")                                .arg(username).arg(password);  

 关键代码②:登录失败后会弹出一个QMessageBox进行提示登陆失败

 关键代码③: 登录成功后要把当前的数据保存起来,创建一个新的MyConnect网络连接,显示网络连接界面,登录界面关闭。

MyConnect *C = new MyConnect; 
C->show();
this->close();
void MyLoginDialog::on_pushButtonLogin_clicked()
{
    sqlite_Init();
    QString username = ui->lineEditLoginName->text();
    QString password = ui->lineEditLoginPasswd->text();
    QString sql=QString("select * from user where username='%1' and password='%2';")
            .arg(username).arg(password);
    //创建执行语句对象
    QSqlQuery query(sql);
    //判断执行结果
    if(!query.next())
    {
        qDebug()<<"Login error";
        QMessageBox::information(this,"登录认证","登录失败,账户或者密码错误");

    }
    else
    {
        qDebug()<<"Login success";
        QMessageBox::information(this,"登录认证","登录成功");
        Currentname = username;
        CurrentPasswd = password;
        MyConnect *C = new MyConnect;
        C->show();
        this->close();
    }
}

点了注册按钮就会转向注册界面

void MyLoginDialog::on_pushButtonGoRegist_clicked()
{
    this->close();
    MyRegistDialog *r = new MyRegistDialog;
    r->show();
}

2.注册

点了注册这个按钮就会判断是否注册成功

关键代码①:判断输入的注册是否成功--->

 QString sql=QString("insert into user(username,password) values('%1','%2');")                                  .arg(username).arg(password);

关键代码②:注册失败后会弹出一个QMessageBox进行提示注册失败

 关键代码③: 注册成功后会返回登录界面

 MyLoginDialog *l = new MyLoginDialog;
 l->show();
 this->close();
void MyRegistDialog::on_pushButtonIsRegist_clicked()
{
    sqlite_Init();
    QString username = ui->lineEditRegistName->text();
    QString password = ui->lineEditRegistPasswd->text();
    QString surepass = ui->lineEditSurePasswd->text();
    //判断密码是否一致
    if(password == surepass)
    {
        QString sql=QString("insert into user(username,password) values('%1','%2');")
                .arg(username).arg(password);
        //创建执行语句对象
        QSqlQuery query;
        //判断执行结果
        if(!query.exec(sql))
        {
            qDebug()<<"insert into error";
            QMessageBox::information(this,"注册认证","插入失败!");
        }
        else
        {
            qDebug()<<"insert into success";
            QMessageBox::information(this,"注册认证","插入成功!");
            MyLoginDialog *l = new MyLoginDialog;
            l->show();
            this->close();
        }

    }else{
        QMessageBox::information(this,"注册认证","两次密码输入不一致");
    }
}

3.网络连接

当点击连接这个代码的时候,会进行连接网络,判断是否连接成功

关键代码①:将输入的ip和端口传到tcp中--->

tcpSocket->connectToHost(ui->lineEditSerIP->text(),ui->lineEditPort->text().toInt());

关键代码②:怎么判断tcp连接成功呢--->

tcpSocket->waitForConnected(2)

关键代码③: 连接成功后会返回主游戏界面,把当前的游戏玩家的名字,发送给linux的服务器

 QByteArray dataName = Currentname.toLatin1();        
tcpSocket->write(dataName+"玩家已经进入游戏"); 
this->close();
Widget *w = new Widget;        
w->show();      
void MyConnect::on_pushButton_clicked()
{
    newConnect();
}

void MyConnect::newConnect()
{
    // 初始化数据大小信息为0
    blockSize = 0;

    tcpSocket->connectToHost(ui->lineEditSerIP->text(),
                             ui->lineEditPort->text().toInt());

    if (tcpSocket->waitForConnected(2))
    {
        qDebug() << "connect successfuilly!\n";
        QByteArray dataName = Currentname.toLatin1();
        tcpSocket->write(dataName+"玩家已经进入游戏");
        this->close();
        Widget *w = new Widget;
        w->show();
        emit isConncted();//连接成功释放信号
    }
    else
    {
        qDebug() << "connect failed!\n";
        QMessageBox::information(this,"网络连接","连接失败,请检查IP与Port信息");
    }

}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值