统信DTK开发套件应用技术分享
近年来,信创产业发展迅猛,国产软硬件适配的需求日益增加,但国内CPU架构种类繁多,导致大量的适配投入。同时,由于底层代码质量不同、代码实现风格不统一等问题,造成自研操作系统的应用开发门槛高,应用生态严重缺失。
面对这种情况,统信软件专门推出一款帮助开发者快速实现跨平台跨架构的开发套件:DTK(Development ToolKit)。DTK是统信基于Qt开发的一整套简单且实用的通用开发框架,处于统信UOS系统中的核心位置,统信UOS浏览器、音乐、邮件等40余款原生应用全部使用DTK开发。DTK从开发者的角度出发,融合现代化的开发理念,提供丰富的开发接口与支持工具,满足日常图形应用、业务应用、系统定制应用的开发需求,提升开发效率,让开发者畅享跨平台、跨架构的开发体验。
统信软件同心生态联盟联合统信软件教育与考试中心将于2022年3月10日14:00-16:00,举办同心赋能·铸就未来第六期—统信DTK开发套件应用技术培训活动,采用线上腾讯会议(会议号:369-413-916)帮助更多的开发者从理论和实践的角度,了解“统信DTK开发套件应用技术”,解决开发者长久以来在自主软硬件平台开发的烦恼。
2019年伴随着deepin V20版本的开发,DTK也迎来了有史以来的最大改动,从此开始了DTK5.0时代。

DTK其实是多个项目的总称,它按功能角色划分了不同的模块,dtkcommon是所有模块的基础,它主要提供qmake相关的pri/prf文件,因为每个模块项目的目录结构都有许多共同点,比如都分了src、tools、tests这些子目录,并且都需求在编译期自动生成一些文件,还会定义一些文件的安装路径,为了方便统一的管理这些行为,遂将这些通用的与qmake构建相关的实现都放到了dtkcommon中实现,以便在其它模块编译时统一引用。
dtkcore包含了所有与图形不相关的实现,它的定位与Qt5的QtCore类似,提供了获取系统信息、监听文件系统、日志框架等功能。
dtkgui的定位是用来实现与图形相关且与具体的UI控件无关的基础功能,提供了如图形环境的主题读写功能,可以获取和设置鼠标光标的闪动速度、当前环境的文字大小等配置。
在这之外还封装了与窗口管理器交互的功能,比如获取窗口管理器的名称、为某个窗口设置开启背景模糊的功能,这些功能在DDE桌面环境中被大量使用。此外还提供一些与图形相关的工具类,此处不再详细展开。
dtkwidget建立在dtkgui之上,它主要包含两大部分内容,一是对Qt已有控件提供符合deepin设计的样式,在这个实现中,没有使用任何qss代码,而是对Qt更底层的部分进行覆盖,这样做的好处是:不影响使用DTK开发的程序使用qss来进行二次定义,对于一个开发库来说,这有非常大的意义。
另一方面,因为Qt已有的控件已经设计了很多年,对于现代化的应用程序来说,它缺少新鲜血液的注入,缺乏新控件,无法满足新型的现代化程序的开发,所以DTK还增加了一些新控件,比如“标签编辑框”、“窗口内部的消息通知”、“开关式切换按钮”等。此外对所有的控件(Qt中已有的和DTK中新增的),都统一了字体和颜色管理系统,使用dtkwidget开发的应用,都可以自动跟随图形环境的“亮色”和“暗色”主题设置,可以统一的响应系统字体大小改变,不用重启应用也可以实时看到效果。
qt5integration和qt5platform-plugins是为Qt编写的插件,为程序提供了对操作系统能力的封装,比如调用系统提供的文件选择对话框、为窗口自定义标题栏、设置窗口的圆角大小等功能。
这两个模块不会被应用程序直接使用,它们所提供的所有能力皆已经在dtkgui和dtkwidget中进行了封装,所以很好的屏蔽掉了程序对底层系统的强制依赖,使得DTK开发的程序可以轻松的迁移到其它平台。
DTK一键安装开发工具包
为了方便开发者开发 DTK 应用,我们已经将所有做 DTK 应用开发的软件包整合在了一个软件包里面,安装该包即可自动安装做 DTK 应用开发的环境,包括 libdtkwidget-dev, libdtkgui-dev, libdtkcore-dev,cmake,qtcreator,qtcreator-template-dtk,qt5-default,g++,git…等包。
安装开发环境
在目前的最新版 deepin 商店,已经上架了 DTK 开发工具包,在商店搜索 DTKIDE 即可看到
2022年3月10日14:00-16:00,将为您详细介绍DTK开发套件应用技术,采用线上腾讯会议(会议号:369-413-916)帮助更多的开发者从理论和实践的角度,了解“统信DTK开发套件应用技术”,解决开发者长久以来在自主软硬件平台开发的烦恼。
————————————————
版权声明:本文为CSDN博主「蔚颖willing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/willingpoint/article/details/123376406
统信DTK开发套件应用技术分享的更多相关文章
- 跨平台跨架构的统信DTK开发套件教程及常见问题
DTK是统信基于Qt开发的一整套简单且实用的通用开发框架,处于统信UOS系统中的核心位置,统信UOS浏览器.音乐.邮件等40余款原生应用全部使用DTK开发.DTK从开发者的角度出发,融合现代化的开发理 ...
- fir.im Weekly - 新开发时代,需要什么样的技术分享
"2016年,当我们迎来了如Xcode 8.Swift 3.SiriKit.Android N.Android Instant Apps.React Native等诸多移动开发技术.开发工具 ...
- iOS开发技术分享(1)— iOS本地数据存储
iOS开发技术分享(1)— iOS本地数据存储 前言: 我本是一名asp.net程序员,后来加入了iOS游戏开发队伍,到现在也有一年多的时间了.这一年来,每天都干到2.3点钟才睡觉,不为别的,只为了学 ...
- AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享
原文:AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享 ====================www.ayjs.net 杨洋 wpfui.com ...
- AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享
原文:AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net 杨洋 wpfui.com ...
- C# 桌面软件开发-深入学习[2]- AY-C#人爱学不学-aaronyang技术分享
原文:C# 桌面软件开发-深入学习[2]- AY-C#人爱学不学-aaronyang技术分享 1 : C# Assembly.GetEntryAssembly().GetName().Version. ...
- C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享
原文:C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享 曾经我做office,不想依赖别人dll,就使用了 Type.GetTypeFromProgID 可以根 ...
- 开源物联网框架ServerSuperIO 3.0正式发布(C#),跨平台:Win&Win10 Iot&Ubuntu&Ubuntu Mate,一套设备驱动跨平台挂载,附:开发套件和教程。
3.0版本主要更新内容: 1.增加跨平台能力:Win&Win10 Iot&Ubuntu&Ubuntu Mate 2.统一设备驱动接口:可以一套设备驱动,跨平台挂载运行,降低人力 ...
- 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路
本文原始内容由作者“阳振坤”整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场景濒临解散,最后在双 ...
随机推荐
- SQL 语句实战演练
1 创建数据库.删除数据库 备注:关键字不一定要大写. CREATE DATABASE sql_testDROP DATABASE sql_test 2 新建表 CREATE TABLE `emp` ...
- Arduino+ESP32 之 驱动GC9A01圆形LCD(二),移植LVGL,跑示例程序,显示自制图片
在前文Arduino+ESP32 之 驱动GC9A01圆形LCD(一), 我们已经移植好了arduino GFX库, 该库的示例程序内,还有LVGL的示例程序哦. arduino环境下移植lvgl是很 ...
- ApacheCN JavaWeb 译文集 20211017 更新
使用 Spring5 构建 REST Web 服务 零.前言 一.一些基本知识 二.在 Spring5 中使用 Maven 构建 RESTfulWeb 服务 三.Spring 中的 Flux 和 Mo ...
- AT [ABC176F] Brave CHAIN
首先可以发现这样一个事实:在每次操作当中,都有三张牌是已经固定的,只有两张牌是不确定的,于是我们可以发下每一次操作的状态可以简单的使用这两张牌来描述,于是可以考虑令 \(dp_{i, j, k}\) ...
- JavaCV的摄像头实战之六:保存为mp4文件(有声音)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Java 数组存储机制
数组是一种引用类型. 数组用来存储类型相同的一组数据,一旦初始化完成,其所占的空间也确定下来了,即使清除某个元素,其所占用的空间仍然存在,即,数组的长度不能被改变,且数组只有在分配空间后才能使用. 数 ...
- Android使用pull解析xml格式的数据
dom解析:基于全文加载的解析方式 sax解析:基于事件的逐行解析方式 pull解析:同sax XmlPullParser //解析xml文件读取短信内容 ...
- SQL的多表查询(笛卡尔积原理)
感谢大佬:https://blog.csdn.net/yang5726685/article/details/53538438 MySQL的多表查询(笛卡尔积原理) 先确定数据要用到哪些表. 将多个表 ...
- Xcode 插件推荐
1. Alcatraz(建议安装,以下插件都可以在Alcatraz下载安装) 使用Alcatraz来下载管理Xcode插件, 2.下载安装注释插件VVDocumenter-Xcode. 3.使用代码对 ...
- 替小白整理的 linux基操命令 切勿扣6 不用感谢
Linux --------小白必会的基本命令 命令行提示字符[root@localhost ~]#[当前登录系统的用户@主机名称 当前所在的目录]## 表示为管理员登录$ 表示为普通用户登录 切 ...