创新实训——飞讯(二)

因计划调整缘故,可直接从(五)看起。

目录

一、设计登录、注册界面

二、实现登录注册功能


一、设计登录、注册界面

利用所学的QT知识,利用可视化设计了一个基础的界面;

由于QT窗口自带一个较为丑陋的边框,为了后续方便设计,调用相关函数去掉边框;

    //去掉边框
    setWindowFlags(Qt::WindowType::FramelessWindowHint);

但是去掉边框后,界面便不可移动等,查询解决方法后,重写了鼠标按压事件和点击事件函数;

//计算鼠标与窗口左上角差值
void Login::mousePressEvent(QMouseEvent *event){
    dPos = event->globalPos() - this->pos();
}
//移动窗口
void Login::mouseMoveEvent(QMouseEvent *event){
    move(event->globalPos()-this->dPos);
}

目前效果如下图(暂定,后续可能会更改设计,如添加图标等):

二、实现登录注册功能

本软件基于腾讯云im进行设计,由于官网文件Windows端QT相关的导入内容不够,故花费了一些时间在相关SDK的导入上;

随后阅读了使用的相关文档;并完成了初始化SDK;

其中,由于使用过程中是通过JSON文件进行数据传输,故我先对Json以及Qt有关Json和网络通信的内容进行了一些相应的简单学习;

登录注册的流程如下:

 部分代码如下:

              if (json_error.error == QJsonParseError::NoError) {
                if (doucment.isObject()) {
                  const QJsonObject obj = doucment.object();
                  qDebug() << obj;
                  if(obj.contains("code")){
                      QString thecode=obj.value("code").toString();
                      if(thecode=="400"){
                          QString themsg=obj.value("msg").toString();
                          ui->register_useridrepeattip->setText(themsg);
                          ui->register_useridrepeattip->show();
                          reg_success.show();
                      }
                      else{//失败
                      }
                  }
                }
              }
void Login::on_loginbtn_clicked()
{
    const char* user_id;
    const char* user_sig;
    //post
    QNetworkRequest request1;
    request1.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));

    QEventLoop eventLoop;

    connect(m_accessManager,SIGNAL(finished(QNetworkReply*)),&eventLoop,SLOT(quit()));

    QString userid=ui->userid->text();

    //z转char
    QByteArray tran=userid.toUtf8();
    user_id=tran.data();

    QString pass=ui->password->text();
    //request1.setUrl(QUrl("http://124.221.248.254:8081/login?userid="+userid+"&&password="+pass));
    request1.setUrl(QUrl("http://124.221.248.254:8081/user/login"));
    //json处理
    QJsonObject json;

    json.insert("password",pass);
    json.insert("userid",user_id);


    QByteArray postData=QJsonDocument(json).toJson(QJsonDocument::Compact);
    QString str(postData);

    //qDebug()<<postData;

    QNetworkReply* initReply = m_accessManager->post(request1,str.toUtf8());

    eventLoop.exec();

    QByteArray responseData;
    responseData=initReply->readAll();


    qDebug()<<"responseData is"<<responseData;

    QJsonParseError json_error;
      QJsonDocument doucment = QJsonDocument::fromJson(responseData, &json_error);
      if (json_error.error == QJsonParseError::NoError) {
        if (doucment.isObject()) {
          const QJsonObject obj = doucment.object();
          qDebug() << obj;
          //qDebug() << "in najnd";
          if (obj.contains("data")) {
            const QJsonObject obj_data = obj.value("data").toObject();
            if (obj_data.contains("tel"))
            {
              QString token = obj_data.value("tel").toString();
              //qDebug() << token;
            }
            if (obj_data.contains("userSig"))
            {
              QString sig = obj_data.value("userSig").toString();
              //qDebug()<<"5555555555555555555555555555"+sig;
              //转char*
              QByteArray ba=sig.toUtf8();

              //qDebug()<<"666666666666666666666666666666666"+ba;

              user_sig=ba.data();

              const void* user_data=nullptr;


              TIMLogin(user_id,user_sig,[](int32_t code,const char* desc, const char* json_param, const void* user_data){
                  if (code != ERR_SUCC) {
                          // 登入失败
                      loginsuccess=false;
                      qDebug()<<"LOGIN fail!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<endl;
                          return;
                      }
                  else{
                      islogin=true;
                      qDebug()<<"login in!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<endl;
                  }
              },user_data);

              QtConcurrent::run(this,&Login::emitLogin_success);

            }
          }

        }
      }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值