Qt全球峰会2023中国站 参会概要

Qt全球峰会2023中国站 参会概要

  • 前言
  • 峰会议程
    • 签到 & Demo 演示
    • 开场致辞
    • Qt Group 产品总监演讲(产品开发的趋势-开放的软件、工具和框架)
        • 产品战略
        • QtQuick or QtWidgets(c++ or qml)
        • Qt如何定义AI
        • 个人看法
    • Qt 在券商数字化转型和信创改造中的创新实践
    • Qt产品路线图
        • 关于Qt版本
    • Qt 赋能STM32 MPU 人机界面应用 - 助力用户构建强大高效的 GUI
  • 下午场是分论坛进行,我反复切换,只选择了感兴趣的
    • 非零和博弈的 HMI 开发流程
        • 何为产品经理
        • 零和博弈(具体到汽车行业)
    • 银河麒麟 Qt 框架源码级桌面实践分享
        • Qt 的看护难度(不是很理解该用词)
        • 与 Qt 商业版本合作的原因
        • 疑难问题修复
        • Qt 工作构想
    • 使用静态代码分析工具提升软件质量(手机拍照,将就着看)
    • Qt + OneOS 提升客户 HMI 产品开发体验
    • Qt Wayland 最新进展
    • 如何在新的硬件平台上运行 Qt for MCUs
        • 为什么要在 MCU 上使用 Qt ?
        • 官方现已适配超过35款MCU(拍的实在糟糕,但这些都是公开的资料)
  • 纪念品照片
  • 个人对 Qt 的看法

前言

在今年三月份的某一天,意外的发现,我所关注的公众号“Qt软件”,头像由原本清新的绿色变为了厚重的黑色
在这里插入图片描述 在这里插入图片描述习惯了清新绿的我有些奇怪,正好 Qt 在我常使用的 B站 有运营着活跃的官方账号,于是尝试在该账号的视频下留言“logo由绿变黑是有什么寓意吗?”,得到了如下回复:
在这里插入图片描述
再进入Qt官网查看,发现已由 Qt Company 变为了 Qt Group,惊觉自己对 Qt 的认知还停留在从前,于是在九月下旬得到Qt全球峰会中国站在上海召开的消息推送时,第一时间报名,最终审核成功,有幸参与了 Qt全球峰会2023中国站,本人并不是一位资深的软件工程师,今天只是站在一个普通开发者的角度,记录此次会议的概要,发表下个人愚见。

峰会议程

此次峰会,上午场为全体大会,下午场以分论坛方式举行,分为 嵌入式开发桌面/移动端开发 两个专场
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

签到 & Demo 演示

峰会地址是上海万豪虹桥大酒店,会场还是很好找的,签到完成,获得吊牌,再送几本宣传册

在这里插入图片描述

开场致辞

Qt Group亚太区副总裁致辞,全英文无翻译…

Qt Group 产品总监演讲(产品开发的趋势-开放的软件、工具和框架)

产品战略
  • 总体而言,Qt的产品战略为:公开的工具、开放的框架,专注于优化产品开发流程;
  • 软件开发方面,使其他部门无缝衔接入产品的开发流程中,QA工具为产品的质量做了保证;
  • 相信开放工具战略,积极拥抱第三方(如 Qt 6 拥抱 cmake)
  • QtCreator 的目标是稳定的API,开放插件生态,集成更多有趣的功能
  • 开放的框架战略,并不是要兼并所有,而是包容的思想(如在已有的软件基础上,使用Qt进行组合)
QtQuick or QtWidgets(c++ or qml)

这真是个老话题了,我已经不想多讨论,直接粗暴的使用一个经典言论:你的软件使用鼠标比较多就选择widgets,触屏操作多就选择quick;这句话适用于大部分场景。

Qt如何定义AI

生成式的AI并不能确保质量,生成越多,测试工作就越多(由此引出了Qt 的 COCO7工具),
AI是增强性的功能,而不是主导性的功能。

个人看法

在很多开发者的认知中,Qt 只是一个开发框架,一些新的用户甚至可以说出“Qt是一个UI库”这样的言论;在我看来,按照 Qt 目前的布局,它将是一个全套的解决方案。

Qt 在券商数字化转型和信创改造中的创新实践

由国泰君安的一位员工(title就不提了)分享Qt在金融证券行业的案例,该行业中的投资者对软件响应速度有一定要求,以及大量用户使用MacOS、Linux、国产操作系统(跨平台需求)

  • 国泰君安2002年推出全行业首家全自研网上交易终端(基于Delphi)
  • 2015年8月:行业首发一户通账户体系的融合金融终端
  • 2018年3月:启动新框架调研
  • 2018年8月:完成PC端技术栈的调研,选择Qt作为国泰君安新一代PC端主要开发框架
  • 2019年12月:完成整体基于Qt框架的MAC版富易(国泰君安网上交易专用系统)
  • 2021年7月:得益于选择的Qt框架满足信创要求,实现全行业首发上线支持国产系统版本富易
  • 2022年8月:基于Qt自研框架
  • 2023年12月:全面部署切换,日均在线用户16万,日调用量1亿+

这是一个成功的案例,该公司无疑是开拓、进取且勇敢的。

Qt产品路线图

获悉Qt目前已有4800+万行代码,这个代码量并不是只有Qt framework,包含了COCO单元测试工具、Squish UI自动化测试、Test center 平台等;详细的内容我建议直接去 Qt Group 看
在这里插入图片描述

关于Qt版本
  • 当前的时间节点,Qt最近的长期支持版本是6.5
  • 目前用户量最多的版本是Qt5.15,由于用户量庞大,原定的LTS版本支持三年的计划也延长了两年
  • Qt6.6版本增加了很多特性
    • 用于权限管理的QML API
    • 优化对 Android 的支持
    • Style 的改进和优化
    • Qt for web 的优化
    • 正在进行 c++ 20 的初步支持(这是令人激动的)
    • 未来考虑全面支持c++ 20
    • 异步I/O
    • 等等等等…
  • 下一个LTS版本将是Qt6.8,预计于2025年发布

Qt 赋能STM32 MPU 人机界面应用 - 助力用户构建强大高效的 GUI

意法半导体和Qt深度合作,高性价比图像解决方案


下午场是分论坛进行,我反复切换,只选择了感兴趣的


非零和博弈的 HMI 开发流程

抱歉,我没有太多产品思维,也没有汽车行业的经验,纯粹牛嚼牡丹在这里插入图片描述在这里插入图片描述
在这里插入图片描述

根据我拍下的照片,抄录下一些概念:

何为产品经理

产品经理是负责监督产品或一系列产品在其生命周期中的开发和管理的专业人士;他们在定义产品策略、设定优先事项,并指导产品开发过程中起着至关重要的作用。

零和博弈(具体到汽车行业)
  • 在工作流程中,总有一方会在一个周期内赢得主导权,然后突然出现某个观点,然后下一次就轮到另一方接管
  • 在设计和开发开始整合时,我们听到了很多抱怨,整个迭代过程中充满了摩擦
  • 当他们开始考虑将其复用并扩展到其它车型时,整个代码库得支持变的难以为继,甚至难如登天,最终导致了延迟,最初高利润的计划变成了一场白日梦

银河麒麟 Qt 框架源码级桌面实践分享

银河麒麟桌面操作系统中,Qt 起到承上启下的作用,系统层次从上往下依次是:

  • 业务应用:图形化应用程序
  • 桌面环境:任务栏、文件资源管理器等
  • 应用运行时:Qt
  • 基础库环境:Glibc、FFmpeg、openssl、bluez、DBus、alsa…
  • 硬件环境
Qt 的看护难度(不是很理解该用词)

以某版本为例,统计了 Qt 开发模块数、API数量、目前社区未解决bug数量(两千多个,数据似乎很惊人),同时要求了工程指标;

与 Qt 商业版本合作的原因
  • 产品质量得到保证
  • 促进生态
  • 从 Qt Group 可获得高质量的技术支持服务
  • 通过培训以及共同排查问题的过程,提高研发实力

任何选择,你最好都有你的理由。

疑难问题修复

麒麟系统级开发,遇到的问题不常见,太细节了,在此就不放了,只说一个常见的:Qt 版本升级引发的兼容性问题。麒麟遇到这个问题的原因是由于Qt public API 的兼容性保证,升级前过于乐观,升级后出现大量问题,原因是 private API 兼容性欠佳;(一些邪恶的软件工程师喜欢用Qt private 模块,hhhhh,狠狠的敲打)

Qt 工作构想
  • 构建多平台一致的 Qt 使用方法,提高生态适配效率
  • 为 Qt 应用开发各环节赋能,提高产品质量

很好的愿景,第一条的解读:如 windows 系统上 Qt 开发,直接下载 Qt 提供的预编译包即可,即使安装多个版本也无妨,而在 Linux 下情况是不同的,不熟悉 Linux 环境的开发者,会浪费一些时间在这上面(更遑论Linux发行版错综复杂),徒增心智负担。

使用静态代码分析工具提升软件质量(手机拍照,将就着看)

软件开发过程中,如果没有采取积极的措施,软件的复杂性/功能性将越来越快地增长,称之为“软件侵蚀”,我们需要阻止它
在这里插入图片描述

重构:功能性不变,从工程角度提升技术架构和质量;持续的重构,可改善软件侵蚀
在这里插入图片描述
在实践中,这是难以实现的,预算、时间、风险都是企业无法接受的,最终很难改善问题
在这里插入图片描述

  • 重构是个很好的办法,只是作为集中式的任务来说有点困难
  • 把它分散到更小的迭代中
  • 预算、时间、风险虽然仍存在,但可以通过日常任务的方式来处理,类似敏捷开发方法
  • 使用 Axivion 进行 CI(持续集成)中的静态代码分析(图穷匕见)
    在这里插入图片描述

Qt + OneOS 提升客户 HMI 产品开发体验

OneOS 自上至下抽象为:

  • 应用场景
  • 组件层
  • 框架层
  • 内核层
  • BSP/Driver
  • 硬件层
    OneOS 框架层选择了 Qt for MCUs 作为开发框架,以下直接展示产品:
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Qt Wayland 最新进展

  • linux 桌面正在迁移到 Wayland
  • gnome 推动 Wayland
  • KDE 6.0 全面支持 Wayland(将于今年开发完毕,KDE 加油!)

齐亮大佬云淡风轻的从 X-Server 为引,围绕 Compositor 讲解 QtWayland,让我汗流浃背(差距太大了)

如何在新的硬件平台上运行 Qt for MCUs

以下直接摘自演讲者PPT,本人对 MCU 并不太了解,侵删

为什么要在 MCU 上使用 Qt ?
  • 使用 MCU 的优势
    • 便宜:通常比 MPU 价格更低
    • 快速:启动时间大大缩短
    • 可靠:复杂度更低,更容易保证健壮性
    • 高效:更容易快速实现大规模生产
  • 原生 API 开发的劣势
    • 开发效率低:缺乏抽象层,很难开始开发,验证调试复杂
    • 厂商绑定:每家都有各自的 API 和配置,纯体力劳动
  • 使用 Qt 解决了哪些问题
    • 简单:Design Studio 和 QML 适用于设计师和 TA
    • 可扩展性:应用很容易在不同供应商的 MCU 和板卡之间迁移
    • 支持:完善的文档和众多示例以及本地化支持
官方现已适配超过35款MCU(拍的实在糟糕,但这些都是公开的资料)

在这里插入图片描述

  • 在 MCU 上使用 Qt 非常简单,而且不会被锁定在某个 MCU 供应商或特定板卡上
  • 你可以在一个官方支持的平台上试用,然后根据自己选择的 MCU 进行定制
  • 移植的步骤都有详细记录,你可以按照步骤进行

纪念品照片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

个人对 Qt 的看法

  • 使用 Qt 的时间也不短了,算是一个 Qter,犹记得第一次使用 Qt show 出一个窗口时激动的心情;我很愿意相信,Qt 为 c++ 焕发了活力,c/c++ 的学习是枯燥的,很多人学习 c++ 时都是对着冰冷的终端,无情的打印字符,做不出任何东西,得不到正反馈,很难不让人自我怀疑。
  • Qt 简化了 c++ 的使用,见到很多初学 Qt 的学生或是跨行业选手,在连 c++ 基本语法(基本语法不作具体定义,大家伙别太魔怔)都认不全的情况下,使用 Qt 做出了简单的项目,且能够不出巨大的纰漏,颇有 “旧时王谢堂前燕,飞入寻常百姓家” 的意味;我本人也比较感激 Qt,它让我平滑的学习了 c++。
  • 而今,Qt Group 有了更远大的目标,一方面,Qt 公司较小的体量,维持着庞大的产品线,令人担忧;另一方面,似乎很多优秀的作品都是由小而美的团队完成,太多人的意见也会让事情变坏;这很难评价。
  • Qt 的多重授权、发律师函、以及嵌入式上 LGPLv3 协议的不明确解读颇受诟病,期望未来能够有更好的商业化策略。
  • 不管怎样,希望它越来越好。

最后,让我们一起读出 “Qt”(同 cute 读音)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/162770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】内连接和外连接

内连接和外连接 前言正式开始内连接外连接左外连接右外连接 前言 前一篇讲多表查询的时候讲过笛卡尔积,其实笛卡尔积就算一种连接,不过前一篇讲的时候并没有细说连接相关的内容,本篇就来详细说说表的连接有哪些。 本篇博客中主要用到的还是…

中部A股第一城,长沙如何赢商?

文|智能相对论 作者|范柔丝 长沙的马路,都很有故事。 一条解放西路,是全国人民都争相打卡的娱乐地标;一条太平街,既承载了历史的厚重又演绎着现代的鲜活...... 但如果来到河西的桐梓坡路,风景会变得截然不同。 沿…

安装MySQL搭建论坛

课前默写: 1、nginx配置文件的区域有哪些 ①全局区域 ②events区域 ③http区域 2、区域模块的作用 全局区域模块主要是用户和工作进程 events区域模块配置最大连接数时需先配置:vim /etc/limits.conf 因为系统默认最大是1024 http区域模块:代理地…

BUUCTF [HBNIS2018]excel破解 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源: https://github.com/hebtuerror404/CTF_competition_warehouse_2018 密文: 下载附件,得到一个attachment.xls文件。 解题思路&#xff…

计算机视觉的应用19-基于pytorch框架搭建卷积神经网络CNN的卫星地图分类问题实战应用

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用19-基于pytorch框架搭建卷积神经网络CNN的卫星地图分类问题实战应用。随着遥感技术和卫星图像获取能力的快速发展,卫星图像分类任务成为了计算机视觉研究中一个重要的挑战。为了促进这一…

git的用法

目录 一、为什么需要git 二、git基本操作 2.1、初始化git仓库 2.2、配置本地仓库的name和email 2.3、认识工作区、暂存区、版本库 三、git的实际操作 3.1 提交文件 3.2 查看git状态以及具体的修改 3.3 git版本回退 git reset 3.1 撤销修改 四、git分支管理 4.…

vue el-table (固定列+滚动列)【横向滚动条】确定滚动条是在列头还是列尾

效果图&#xff1a; 代码实现&#xff1a; html&#xff1a; <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src"//unpkg.com/element-ui2.15.14/lib/index.js"></script> <div id"app" style&quo…

【数据结构】树如何定义 | 如何存储 | 实际应用

前言 如上图&#xff0c;A中的孩子的个数是不固定的。我们无法精确的每个不同的根结点有多少个孩子。所以并不能精确知道需要定义多少个孩子节点。 struct TreeNode {int val;struct TreeNode* child1;struct TreeNode* child2;struct TreeNode* child3;//...//这样显然是不能…

springboot 拦截器中使用@Value注解为null

拦截器中获取配置参数为null 代码如下&#xff1a; 解决方式一&#xff1a; 检查你的WebMvcConfigurer实现类&#xff0c;比如我的是CCBWebMvcConfig 将拦截器以bean的形式注入&#xff1a; 我之前的写法是new 一个放进去的&#xff0c;这种会导致Value为null AutowiredJSCCB…

2014年10月6日 Go生态洞察:Go在Google I/O和Gopher SummerFest的应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

《微信小程序开发从入门到实战》学习二十七

3.4 开发参与投票页面 3.4.2 借用伪造数据开发功能 为了便于开发&#xff0c;新建一个编译模式&#xff1a; 之前没看文章&#xff0c;每次都习惯性填完投票创建的信息提交再跳转看效果。好累。 添加变异模式开发真方便。 另外&#xff0c;点击提交后没跳转到投票页面&#…

xorm源码学习

文章目录 XORM源码浅析及实践ORMORM vs. SQLXORM软件架构 ORM 引擎 Engine——DBM*core.DB Golang&#xff1a;database/sql 源码基本结构连接复用&#xff0c;提高性能。增加数据库连接池数量连接管理 database/sql主要内容&#xff1a;sql.DB创建数据库连接sql.Open()DB.conn…

Spring——感谢尚硅谷官方文档

Spring——尚硅谷学习笔记 1 Spring简介&#x1f47e;1.1 Spring概述1.2 Spring Framework1.2.1 Spring Framework特性1.2.2 Spring Framework五大功能模块 2 IOC-IOC容器思想&#x1f47e;IOC容器思想IOC在Spring中的实现 3 IOC-基于XML文件管理Bean&#x1f47e;3.1 准备工作…

2023亚太杯数学建模A题思路 - 采果机器人的图像识别技术

# 1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国&#xff0c;年产量约为3500万吨。与此同时&#xff0c;中国也是世 界上最大的苹果出口国&#xff0c;全球每两个苹果中就有一个&#xff0c;全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

数据库实验四 索引创建与管理操作

数据库实验四 索引创建与管理操作 一、实验目的二、设计性实验三、观察与思考 一、实验目的 (1) 理解索引的概念与类型。 (2) 掌握创建、更改、删除索引的方法。 (3) 掌握维护索引的方法。 二、设计性实验 在数据库job下创建worklnfo表。创建表的同时在id字段上创建名为inde…

【HarmonyOS】元服务卡片本地启动拉起加桌没问题,上架后拉起加桌时卡片展示异常

【关键字】 加桌选卡展示异常 、 2卡共用一个布局 、 代码混淆 【问题现象】 元服务卡片在本地启动拉起加桌时&#xff0c;多卡的选卡过程显示是没问题的。但是在上架后拉起加桌时&#xff0c;多卡的选卡过程卡片展示异常。 代码逻辑是通过创建卡片的时候判断卡片的尺寸大小…

数据结构与算法编程题13

设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C&#xff0c;其中B表的结点为A表中值小于零的结点&#xff0c;而C表的结点为A表中值大于零的结点&#xff08;链表A中的元素为非零整数&#xff0c;要求B、C表利用A表的结点&#xff09; for example: A -1 2 …

SpringBoot + 通义千问 + 自定义React组件,支持EventStream数据解析!

一、前言 大家好&#xff01;我是sum墨&#xff0c;一个一线的底层码农&#xff0c;平时喜欢研究和思考一些技术相关的问题并整理成文&#xff0c;限于本人水平&#xff0c;如果文章和代码有表述不当之处&#xff0c;还请不吝赐教。 最近ChatGPT非常受欢迎&#xff0c;尤其是…

virtualList 封装使用 虚拟列表 列表优化

虚拟列表 列表优化 virtualList 组件封装 virtualList 组件封装 本虚拟列表 要求一次性加载完所有数据 不适合分页 新建一个select.vue 组件页面 <template><div> <el-select transfer"true" :popper-append-to-body"true"popper-class…