创新实训——飞讯(二)

宝塔面板添加站点及运营商SSL免费证书的申请与使用 本文详细介绍在宝塔面板下如何正确添加站点、配置站点,及在运营商如何申请免费SSL证书,将其配置到宝塔站点里。 给你的网站加一把锁,教你免费SSL证书申请,配置到自己的网站中。 环境:Ubuntu server 18 工具:宝塔控制面板 平台:阿里云 Web服务器:Nginx 宝塔:https://www.bt.cn/ 阿里云:https://www.aliyun.com/ 腾讯云:https://cloud.tencent.com/ 要求: 1.宝塔控制面板搭建完毕。 2掌握域名解析的原理。 3.了解ht 阅读详情

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

目录

一、设计登录、注册界面

二、实现登录注册功能


一、设计登录、注册界面

利用所学的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);

            }
          }

        }
      }

}

多模态脑区细分图谱 HCP-MMP v1.0, Glasser et al. 2016 皮层和皮下区域,简写和全称对应关系 人类连接组计划多模态脑区细分图谱(HCP-MMP)提供了对人类大脑皮层区域的非常有用的细分(Glasser et al. 2016a, b)。图谱是多模态的,因为每个区域都是根据四个标准的组合定义的,包括结构(T1加权/T2加权髓鞘含量和皮层厚度图)、静息态功能连接、基于任务的激活和拓扑地形组织。HCP-MMP v1.0图谱包含每个半球180个皮层区域,基于210名参与者的分析。 阅读详情

相关推荐

易语言炫酷科幻UI界面源码

易语言炫酷科幻UI界面源码。@毕加索UI设计。

山东大学软件学院创新实训——飞讯(四)

山东大学创新实训第4次记录

weixin_54533613的博客 1915

能源交易基于多智能体强化学习的双侧拍卖市场P2P能源交易优化:产消者经济效益提升方法(论文复现,含详细代码及解释)

内容概要:本文提出一种基于多智能体强化学习(MARL)的去中心化方法,用于实现双边拍卖市场中的点对点(P2P)能源交易。针对传统市场因复杂清算机制和随机投标行为难以建模的问题,作者将P2P能源交易建模为部分可观测马尔可夫博弈(POMG),并提出改进的DA-MADDPG算法。该算法结合连续动作空间设计、市场信息抽象与分布决策机制,使产消者能在无需集中协调的情况下自主优化交易策略。实验结果表明,相比传统零智能策略及其他MARL方法,所提方案在经济效益和社会福利方面均有显著提升。;适合人群:具备强化学习基础、熟悉Python编程,从事能源系统优化、智能电网或分布交易研究的研发人员及研究生。;使用场景及目标:①研究去中心化能源市场中的多主体协同机制;②实现基于深度强化学习的P2P能源交易策略优化;③对比分析不同交易策略(如ZI vs. DA-MADDPG)在双边拍卖市场中的性能差异;阅读建议:此资源包含完整的理论建模、算法实现与数值仿真代码,建议结合论文框架与代码实践,深入理解从环境建模、订单匹配算法到智能体训练的全流程,并可通过扩展能源系统参数或引入更多市场规则进行开发

易语言UI设计体会

总是有人对我说:“做UI实在太难,你到底是怎么做好这个行业的啊?”我的回答是:“其实不是这样的。任何事物都有你所认知的一面,但它的背后也许还有你难以认知难以认识的一面。就像原本想成为像帕格尼尼那样的小提琴家的爱因斯坦,每个人都有自己擅长的一面。 话是这么说,但是也不是不可能。因为只有乐于尝试的人才有可能获得成功。这也说明了其实并不是你不擅长这方面,而是表达了你只要肯试试,哪怕不能够成功也会知足的

baidu_35524132的博客 1914

炫彩界面库UI设计器分享, 集成开发环境,C++,易语言

炫彩在线帮助文档 炫彩UI截图 炫彩IDE UI设计器 截图 炫彩webUI 炫彩缓动 炫彩 易语言 火山PC例子截图 简介 炫彩界面库–软件界面开发框架,让用户快速开发桌面软件变的简单高效;功能丰富(一千多个API接口), 简单易用,轻量级,高度DIY自定义,一键换肤,满足不同软件UI需求,安全(所有界面元素无句柄),支持Windows平台所有编程语言, Unicode字符编码,完善的帮助文档及技术支持服务. UI设计器:快速开发工具,所见即所得,...

3236

C# Wke例子 -- WebUI登录窗口

概述 Wke介绍: http://blog.csdn.net/sabrecode/article/details/78145938 用Wke做了一个登录窗口, webui比较特殊. 因为它就是一个超文本浏览框. 所以有些基础交互的东西必须我们手动来实现. 这就是我做这个例子的原因. 有些什么东西需要我们自己实现呢? 拖拽移动窗口 resiz...

weixin_30340745的博客 770

易语言自绘系列教程(美易自绘)(第部分)

“界面工厂”正是一个分享兴趣和爱好在于”软件界面设计”和“软件编程开发”于一体的工作室。 主要是制作一些原创视频( 程序联网(如post,HTPPS访问,JS+POST...), 程序界面开发和设计(如主流界面框架的使用,H5和CSS风格的使用...), 程序嵌套网页(H5嵌套在程序,复杂动画处理...), 程序网络数据库使用(远程访问,负载框架介绍,多用户处理...), 程序自绘(主

代码搬运工 5086

山东大学软件学院创新实训——飞讯

山东大学创新实训次记录

weixin_54533613的博客 1303

创新实训——飞讯(一)

一、项目简介 飞讯是一款为使小型团队作业更加便捷而设计的软件,包括单聊、群聊等功能。本人负责Windows端的开发、第一周工作 采用QT开发,故第一周学习QT相关UI知识,包括可视化UI设计、代码化UI设计以及混合设计的方法;并了解了QT中基本的组件的用途和用法、样表的写法等。 ............

leaf_er的博客 463

山东大学创新实训进度

进度记录

weixin_54533613的博客 440

山东大学软件学院创新实训——飞讯(八)

山东大学创新实训第8次记录

weixin_54533613的博客 428

山东大学软件学院创新实训——飞讯(一)

山东大学创新实训第一次记录

weixin_54533613的博客 517

创新实训——飞讯(六)

一、创建群聊界面 由于毫无经验,界面是参考教学视频编写的;基本步骤为编写结构、调整样、编写功能等。 效果和部分代码如下: 设置了一个变量记录已选择的人数,判断所选人数大于0且输入了群名称(群名称长度大于0)后创建按钮才不为灰; <view class="bottom-btn btn1" :class="{notselected:selectedNumber<=0||groupname.length<=0}">创建({{selectedNumber}})</v

leaf_er的博客 251

创新实训——飞讯(七)

群聊相关im交互

leaf_er的博客 279

创新实训——飞讯(四)

由于组内人员调动原因,组长找了一个可以实现web、小程序、Android、ios的跨平台运行的框架uni-app,考虑到便利性,移动端的制作很重要,且该框架可以实现较多运行方,考虑到时间因素和经验因素,故我和组长一起进行移动端的开发。PC端的制作内容会在本章内简单讲述,细节部分不再详谈,并暂停PC端开发,视后续情况再考虑是否继续。 目录 一、界面设计基础完善 1、聊天界面 2、注册界面 、功能实现 1、登陆后拉取并展示所需数据 (1)拉取数据 (2)展示数据 一、界...

leaf_er的博客 185

山东大学软件学院创新实训——飞讯(六)

山东大学创新实训第6次记录

weixin_54533613的博客 2731

创新实训——飞讯(八)

聊天界面

leaf_er的博客 224

创新实训——飞讯(十)

工作日志与问卷

leaf_er的博客 360

创新实训——飞讯(五)

如(四)中所说,之后为移动端开发相关内容; 目录 一、基础学习 、编写修改弹框 一、基础学习 对于uni-app相关内容的学习,主要包括函数、组件样设置等; 、编写修改弹框 <view class="modify":style="{bottom:-+widHeight+'px'}" :animation="animationData"> <view class="modify-header"> <view class="c

leaf_er的博客 289

创新实训——飞讯(九)

聊天界面的im交互

leaf_er的博客 328

山东大学软件学院创新实训——飞讯(三)

山东大学创新实训第3次记录

weixin_54533613的博客 723
上一篇: 创新实训——飞讯(一)
下一篇: 创新实训——飞讯(三)
leaf_er
博客等级 码龄5年 0粉丝 · 24原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值