学习地址1:pan.baidu.com/s/1cXFbT5P6… 提取码:p3es 学习地址2:share.weiyun.com/2rNgTVDG 密码:naikn9
一、什么是QT? Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,包括Qt、基于FrameBuffer的Qtopia Core、快速开发工具Qt Designer和国际化工具Qt Linguist等部分。Qt支持所有的UNIX系统,当然也包括Linux系统,还支持WinNT/Win2k、Windows 95/98平台。
二、QT的优点有哪些? 1、作为桌面前端的SDK,成熟度很高; 2、由商业公司控制,技术路线很稳定; 3、API没有大量采用晦涩难懂的模板,大部分都是传统的面向对象的编程方式,而且文档齐全,不难入门,学习曲线平缓; 4、2D渲染方面,能和OpenGL\Vulkan、DirectX、Metal很好的适配。
三、实例程序功能 创建一个 Widget Application 项目 samp2_2,在创建窗体时选择基类 QDialog,生成的类命名为 QWDialog,并选择生成窗体。 如此新建的项目 samp2_2 有一个界面文件 qwdialog.ui,一个头文件 qwdialog.h 和源程序文件 qwdialog.cpp。此外,还有项目文件 samp2_2.pro 和主程序文件 main.cpp。 qwdialog.ui 界面文件设计时界面如图 1 所示。程序的主要功能是对中间一个文本框的文字字体样式和颜色进行设置。
四、接下来给大家讲解一个项目,Qt 全流程实战企业级项目 - 云对象存储浏览器项目,以下是代码实战部分:
org.springframework.boot spring-boot-starter-data-redis com.squareup.okhttp3 okhttp com.fasterxml.jackson.core jackson-core com.fasterxml.jackson.core jackson-annotations com.fasterxml.jackson.core jackson-databind commons-codec commons-codec org.apache.commons commons-lang3 commons-fileupload commons-fileupload com.google.guava guava joda-time joda-time 拷贝RedisOperator(见源码)controller测试redis中set和get @Autowired private RedisOperator redis;
@GetMapping("/redis") public Object redis() { redis.set("name", "风间影月"); return redis.get("name"); } 浏览器会限制对域名的调用,不同的域名发起请求到不同的接口会出现跨域问题,为了解决这一问题,可以通过springboot来解决,参考如下代码,主要开放限制域名为*,也就是所有进行调用接口。此配置类为项目配置,可以直接放入任何项目中即可使用。 package com.imooc.api.config;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter;
@Configuration public class CorsConfig {
public CorsConfig() {
}
@Bean
public CorsFilter corsFilter() {
// 1. 添加cors配置信息
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*");
// 设置是否发送cookie信息
config.setAllowCredentials(true);
// 设置允许请求的方式
config.addAllowedMethod("*");
// 设置允许的header
config.addAllowedHeader("*");
// 2. 为url添加映射路径
UrlBasedCorsConfigurationSource corsSource = new UrlBasedCorsConfigurationSource();
corsSource.registerCorsConfiguration("/**", config);
// 3. 返回重新定义好的corsSource
return new CorsFilter(corsSource);
}
}
用户一旦登录注册成功,则需要设置会话,由于分布式微服务,使用分布式会话,用户token等信息存入redis。与此同时,在cookie中也需要设置用户的相关信息。
完善 PassportController.doLogin() int userActiveStatus = user.getActiveStatus(); // 如果用户状态已经被封了,则不设置会话与cookie信息 if (userActiveStatus != UserStatus.FROZEN.type) { // 3. 用户的分布式会话设置 String uniqueToken = UUID.randomUUID().toString().trim(); redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uniqueToken);
// 4. 用户userId与token放入cookie
setCookie(request, response, "utoken", uniqueToken, COOKIE_MONTH);
setCookie(request, response, "uid", user.getId(), COOKIE_MONTH);
}
// 5. 用户登录成功则需要删除已经使用过的短信验证码,该验证码只能匹配使用一次,过后作废 // redis.del(MOBILE_SMSCODE + mobile);
// 6. 用户状态:未激活或者已激活,返回给前端,用于页面跳转 return GraceJSONResult.ok(userActiveStatus);