Documentation Documentation
主页
指南
DTK
经验分享
社区作品
关于
  • 简体中文
  • English
  • Español
GitHub (opens new window)

Deepin

Deepin 社区文档
主页
指南
DTK
经验分享
社区作品
关于
  • 简体中文
  • English
  • Español
GitHub (opens new window)
  • Dtk文档总集合
  • 接口changelog
  • UOS-Deepin 中配置 DTK 开发环境
  • Dtk的历史起源、发展,和简单入门
  • Dtkcore提供的单例类DSingleton的用法
  • Dtk自动保存主题
  • 主题相关知识集锦
  • Dtk播放系统音效
  • 如何实现单例进程
  • DSettingsDialog使用json创建对话框及其国际化
  • DLabel的ElideMode
  • Dtkcore的DExportedInterface接口的用途
  • 判断是否社区版、如何显示 Logo 以及获取发行版名称
  • Dtk 前期准备、绘画 Qt 自带控件、创建及绘画自定义控件
  • Dtk 常用、测试代码片
  • 使用 DDesktopEntry 解析 desktop 文件
  • Dtk加载翻译文件
  • Dtk 日志管理
  • Dtk相关配置目录
  • DTK 对 pkg-config 命令的支持
  • DDesktopServices的使用
  • Dtk汉字转拼音
  • 清空回收站
  • DPathBuf拼接路径
  • 如何调用外部程序
  • DAnchors的使用
  • DBlurEffectWidget的使用
  • 窗口模糊效果
  • Codeanalysis工具的使用
  • 代码格式化脚本pre-commit
  • Qt5 GUI程序界面启动耗时统计工具
  • Scrollbar 设置为上下(左右)不到顶端
  • DAbstractUnitFormatter 单位格式化工具
  • Dtk-translate工具
  • DSettings 工具
  • Deepin-os-release 工具
  • Dlistview DViewItemActionsetwidget 用法
  • DTK问题判定方法
  • 题栏菜单没有「帮助」菜单项
  • DBackgroundGroup 移除一项后,下边的圆角没有刷新
  • 在标题栏拖动鼠标出现无法拖动窗口的问题
  • 锁屏状态下音乐播放控件状态异常
  • 应用图标异常
  • 为什么bug状态为已解决,验证依旧不通过
  • 为何我的标题栏右键菜单的背景色与应用窗口颜色不一致
  • DTK 基础教程:自定义控件规范
  • 制作 dde-control-center 插件
  • DTK
Deepin | Any developer
2020-12-11

DTK问题判定方法

DTK问题判定方法

由于DTK范围较广,所以涉及到的问题也较多,在此只大致说说如何判断一个问题是不是DTK的问题。

要判断一个锅是不是DTK的,那我们首先得对DTK有一个基本的认识,包括它的功能、实现的原理,如此说来那要了解的东西就太多了,由于篇幅限制,在此只做最基本的分享,起一个抛砖引玉的作用,欢迎有兴趣深入了解的同学拍砖和更深层次的分享。

我们的@张文耕同学这篇文章写的非常精彩,是了解DTK不可多得的精品。

DTK的问题主要是集中在界面显示上,当然也会有一些其他的问题是DTK的锅(比如https://pms.uniontech.com/zentao/story-view-3778.html)。

判断一个问题是不是DTK问题,首先要确定两点:

1、该问题由什么原因导致。

2、导致该问题的原因是DTK的Bug吗。

看了上面两句话,我也觉得是废话,但是您莫笑,它还真就需要这样判断。

下面我们还是来看看DTK的功能以及大致实现原理吧,说大致是因为我自己也不太确定它的准确性和权威性,因为也是我自己通过学习源码以及跟DTK前辈以及同学请教自己分析得到的,只是一家之言,仅供大家参考。

目前DTK分为dtkcore、dtkwidget、dtkgui和qt5integration,关于它们的功能,借用一下@张文耕同学的总结:

项目 功能描述
dtkcore 提供应用程序开发中的工具类,如程序日志、文件系统监控、格式转换等工具类
dtkgui 包含了开发图形用户界面应用程序所需的功能。主要是控制窗口主题这种外观性,调色板等信息。
dtkwidget 提供各种dtk基础控件,方便开发统一风格的应用。

由于 qt5integratioin 项目一直是独立的,本不算 dtk 项目里的一员,不过实际上是和 dtk 配套的,故本文算到 dtk 框架中。

以下都是我的个人理解,供大家参考,如有错误,欢迎大家指正。

从源码中看出,qt5integratioin主要是DTK控件样式控制,目前系统中支持两种主题:深色和浅色主题。

qt5integratioin项目中我们最需要了解的就是ChameleonStyle,大部分的DTK控件都是调用它的接口绘制的,它是继承DStyle的,DStyle继承于QCommonStyle,可以这么说,ChameleonStyle、DStyle和QCommonStyle三个类基本上承包了DTK所有控件的绘制,DTK所有控件的绘制样式找它们准没错。

系统主题配色是由dtkgui控制的,主要参考DPalette类,该类继承于QPalette,主要控制DTK配色。dtkgui类似于Qt的gui库,还提供了DGuiApplicationHelper单例类,该类提供系统配色的设置和获取等接口,和DPalette一起实现系统配色。

从上面的功能大致可以看出,99%的界面或显示问题都是dtkwidget、qt5integration、dtkgui这三位大哥的锅,而这三位大哥的锅也各有偏好:

1、dtkwidget 多是控件类的,比如某个控件长的不是我们想要的样子。

2、qt5integration多是控件样式类的,比如某个控件外框多了线或者线的粗细与UI设计不一致等等。

3、dtkgui包括配色、窗口特效、窗口行为等,比如某个控件的前景色、背景色与UI设计不一致等等。

总的来说可以通过以下几步来判断一个问题是不是DTK的锅:

1、首先问题涉及到DTK日志模块、文件系统监控、格式转换、控件样式、颜色等。

2、如果条件1满足,那么再看是不是在最新DTK库下,其他的应用或控件也都有这个问题,也就是调用DTK相关接口的应用都有此问题,如果是基本上就可以确定是DTK的问题了。

以上两条也只是一个基本的判断,如果能找到问题的真正原因当然就更好了。

帮助编辑此页 (opens new window)
上次更新: 12/17/2020, 2:23:36 AM
Dlistview DViewItemActionsetwidget 用法
题栏菜单没有「帮助」菜单项

← Dlistview DViewItemActionsetwidget 用法 题栏菜单没有「帮助」菜单项→

Theme by Vdoing | Copyright © 2020-2021 Deepin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式