统信UOS开发接口DTK

DTK(Development ToolKit)是基于 Qt 开发的简单且实用的通用开发框架。提供丰富的开发接口与支持工具,能有效提升开发效率。

文章目录

  • 一、简介
    • DTK 常见模块介绍
    • 概述
  • 二、框架创建
    • 开发环境准备
    • 使用 cmake
  • 三、常见模块
    • 窗口和对话框

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


一、简介

DTK 常见模块介绍

概述

DTK(Development ToolKit)是统信基于 Qt 开发的一整套简单且实用的通用开发框架。该开发套件可以帮助开发者快速实现跨平台跨架构。DTK 从开发者的角度出发,融合现代化的开发理念,提供丰富的开发接口与支持工具,满足日常图形应用、业务应用、系统定制应用的开发需求,提升开发效率。

DTK 中包含有多个核心模块,同时可无缝融合 Qt 的辅助功能模块。可满足日常图形应用、业务应用、系统定制应用的开发需求。DTK 中常用的项目(库)及其功能描述如下

项目功能描述
dtkcore提供应用程序开发中的工具类,如程序日志、文件系统监控、格式转换等工具类
dtkgui提供开发图形用户界面应用程序所需的功能。主要是控制应用主题,调色板等信息
dtkwidget提供各种 DTK 基础图形控件
qt5integration提供各种 Qt 插件,方便统一 Qt 应用的风格,包括图标引擎,主题插件等
qt5platform-plugins主要是平台插件,如 xcb 插件方便修改 x11 下窗口的属性

项目的主要模块可参考下图

在这里插入图片描述

二、框架创建

开发环境准备

安装依赖
在 deepin 环境开发应用可以按需安装对应开发包

sudo apt install libdtkcore-dev
sudo apt install libdtkgui-dev
sudo apt install libdtkwidget-dev

使用 cmake

使用 cmake 管理的项目引入 dtk

find_package(Dtk REQUIRED COMPONENTS Widget)# 使用 target 的方式,需要 dtk >= 5.6 以后才支持
target_link_libraries(<target>Dtk::Widget
)# pkgconfig
# find_package(PkgConfig REQUIRED)
# pkg_check_modules(DtkWidget IMPORTED_TARGET REQUIRED dtkwidget)
# target_link_libraries(<target> PRIVATE
#    PkgConfig::DtkWidget
#)

或者

find_package(DtkWidget REQUIRED)
target_include_directories(<target> PUBLIC${DtkWidget_INCLUDE_DIRS}
)
target_link_libraries(<target>${DtkWidget_LIBRARIES}
)

使用 qmake
qmake 管理的项目(xxx.pro)

QT += dtkcore dtkgui dtkwidget# pkgconfig
# CONFIG += link_pkgconfig
# PKGCONFIG += dtkwidget

简单的 Demo
使用 qtcreator 开发应用可以安装 qtcreator-template-dtk ,安装后有新建 dtk 项目的模板。

在这里插入图片描述

demo 编译运行如下

在这里插入图片描述
模板自动生成的代码如下

CMakeLists

cmake_minimum_required(VERSION 3.7)project(dtk-demo)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")# Find the library
#find_package(PkgConfig REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(DtkWidget REQUIRED)add_executable(${PROJECT_NAME} "main.cpp" resources.qrc)target_include_directories(dtk-demo PUBLIC${DtkWidget_INCLUDE_DIRS}${OBJECT_BINARY_DIR})
target_link_libraries(dtk-demo${DtkWidget_LIBRARIES}${Qt5Widgets_LIBRARIES}
)
demo 源码#include <DApplication>
#include <DMainWindow>
#include <DWidgetUtil>
#include <DApplicationSettings>
#include <DTitlebar>
#include <DProgressBar>
#include <DFontSizeManager>#include <QPropertyAnimation>
#include <QDate>
#include <QLayout>
DWIDGET_USE_NAMESPACEint main(int argc, char *argv[])
{QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);DApplication a(argc, argv);a.setOrganizationName("deepin");a.setApplicationName("dtk-application");a.setApplicationVersion("1.0");a.setProductIcon(QIcon(":/images/logo.svg"));a.setProductName("Dtk Application");a.setApplicationDescription("This is a dtk template application.")

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

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

相关文章

城市轨道交通数据可视化的应用与优势

通过图扑可视化技术将复杂的数据转化为易于理解的图像&#xff0c;助力交通管理者优化线路规划、提升运营效率和乘客信息服务。轨道交通管理者能够更直观地分析乘客流量、运营效率等关键指标&#xff0c;从而优化线路设计与调度&#xff0c;提高服务质量&#xff0c;为乘客提供…

【JavaEE初阶 — 多线程】生产消费模型 阻塞队列

1. 阻塞队列 (1) 阻塞队列 1. 概念 阻塞队列是一种特殊的队列&#xff0c;也遵守"先进先出"的原则&#xff1b;阻塞队列能是一种线程安全的数据结构&#xff0c;主要用来阻塞队列的插入和获取操作&#xff1a; 当队列满了的时候&#xff0c;插入操作会被…

重构开发之道,Blackbox.AI为技术注入智能新动力

本文目录 一、引言二、Blackbox.AI实战体验2.1 基于网页界面生成前端代码进行应用开发2.2 与AI助手实现实时智能对话2.3 重塑大型文件交互方式2.4 链接Github仓库进行对话编程 三、总结 一、引言 在生产力工具加速进化的浪潮中&#xff0c;Blackbox.AI开始崭露头角&#xff0c…

idea 弹窗 delete remote branch origin/develop-deploy

想删除远程分支&#xff0c;就选delete&#xff0c;仅想删除本地分支&#xff0c;选cancel&#xff1b; 在 IntelliJ IDEA 中遇到弹窗提示删除远程分支 origin/develop-deploy&#xff0c;这通常是在 Git 操作过程中出现的情况&#xff0c;可能是在执行如 git branch -d 或其他…

第四十五章 Vue之Vuex模块化创建(module)

目录 一、引言 二、模块化拆分创建方式 三、模块化拆分完整代码 3.1. index.js 3.2. module1.js 3.3. module2.js 3.4. module3.js 3.5. main.js 3.6. App.vue 3.7. Son1.vue 3.8. Son2.vue 四、访问模块module的state ​五、访问模块中的getters ​六、mutati…

【OpenEuler】配置虚拟ip

OpenEuler系统手动配置虚ip 介绍操作方法临时生效永久生效 验证 介绍 我们知道通过keepalived服务可以为linux服务器设置虚拟ip&#xff0c;但是有些特殊场景下若无法安装部署keepalived服务&#xff0c;则需要通过手动设置的方式&#xff0c;配置服务器的虚拟ip。 本方案提供…

CCI3.0-HQ:用于预训练大型语言模型的高质量大规模中文数据集

摘要 我们介绍了 CCI3.0-HQ&#xff0c;它是中文语料库互联网 3.0&#xff08;CCI3.0&#xff09;的一个高质量500GB子集&#xff0c;采用新颖的两阶段混合过滤管道开发&#xff0c;显著提高了数据质量。为了评估其有效性&#xff0c;我们在不同数据集的100B tokens上从头开始…

fastadmin多个表crud连表操作步骤

1、crud命令 php think crud -t xq_user_credential -u 1 -c credential -i voucher_type,nickname,user_id,voucher_url,status,time --forcetrue2、修改控制器controller文件 <?phpnamespace app\admin\controller;use app\common\controller\Backend;/*** 凭证信息…

安装SQL server中python和R

这两个都是编程语言 R 是一种专门为统计计算和数据分析而设计的语言&#xff0c;它具有丰富的统计函数和绘图工具&#xff0c;常用于学术研究、数据分析和统计建模等领域。 Python 是一种通用型编程语言&#xff0c;具有简单易学、语法简洁、功能强大等特点。它在数据科学、机…

项目技术栈-解决方案-web3去中心化

web3去中心化 Web3 DApp区块链:钱包:智能合约:UI:ETH系开发技能树DeFi应用 去中心化金融P2P 去中心化网络参考Web3 DApp 区块链: 以以太坊(Ethereum)为主流,也包括Solana、Aptos等其他非EVM链。 区块链本身是软件,需要运行在一系列节点上,这些节点组成P2P网络或者半…

【linux】centos7 换阿里云源

查看yum配置文件 yum的配置文件通常位于/etc/yum.repos.d/目录下。你可以使用以下命令查看这些文件&#xff1a; ls /etc/yum.repos.d/ # 或者 ll /etc/yum.repos.d/备份当前的yum配置文件 建议备份当前的yum配置文件&#xff1a; sudo cp /etc/yum.repos.d/CentOS-Base.re…

Python 中.title()函数和.lower()函数

一.title()函数 1.title()函数的功能 将字符串中的每一单词的首字母大写 2.举例 S1"i love you" S2S1.title() print(S2)3.输出 二.lower()函数 1.lower()函数的功能 将字符串中的每一大写字母都变成的小写字母 2.举例 S1"I LOVE YOU" S2S1.lower()…

[DEBUG] 服务器 CORS 已经允许所有源,仍然有 304 的跨域问题

背景 今天有一台服务器到期了&#xff0c;准备把后端迁移到另一台服务器上&#xff0c;结果前端在测试的时候&#xff0c;出现了 304 的跨域问题。 调试过程中出现的问题&#xff0c;包括但不限于&#xff1a; set the request’s mode to ‘no-cors’Redirect is not allow…

【AI构思渲染】网络直播——建筑绘图大模型生成渲染图

家人们&#xff01;&#xff01;好消息来了&#xff01;&#xff01; 2024年11月19日&#xff0c;上午10:00-11:00 构力学堂将会给大家带来一场直播课《AI构思渲染第一课&#xff0c;建筑绘图大模型生成渲染图》 课程亮点&#xff1a; 1、AI插件相关介绍 2、AI构思渲染安装…

初级数据结构——栈

目录 前言一、栈的基本概念二、栈的实现方式三、栈的性能分析四、栈的应用场景五、栈的变体六、出栈入栈的动态图解七、代码模版八、总结结语 前言 数据结构栈&#xff08;Stack&#xff09;是一种线性的数据结构&#xff0c;它只允许在序列的一端&#xff08;称为栈顶&#x…

ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决

前言 在现代前端开发中&#xff0c;代码质量与代码风格的统一是两个非常重要的方面。良好的代码质量能减少 bug 的产生&#xff0c;而统一的代码风格则能提高团队协作的效率。为了实现这两个目标&#xff0c;我们通常会使用一些工具。 为了保证代码的可读性和维护性&#xff0…

简易入手《SOM神经网络》的本质与原理

原创文章&#xff0c;转载请说明来自《老饼讲解神经网络》:www.bbbdata.com 关于《老饼讲解神经网络》&#xff1a; 本网结构化讲解神经网络的知识&#xff0c;原理和代码。 重现matlab神经网络工具箱的算法&#xff0c;是学习神经网络的好助手。 目录 一、入门原理解说 01.…

数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用

昨天帮助社区IC训练营学员远程协助解决一个Calibre DRC案例。通过这个DRC Violation向大家分享下Innovus和ICC2中如何批量约束cell的spacing rule。 数字IC后端手把手实战教程 | Innovus verify_drc VIA1 DRC Violation解析及脚本自动化修复方案 下图所示为T12nm A55项目的Ca…

深度学习神经网络在机器人领域应用的深度剖析:原理、实践与前沿探索

深度学习神经网络在机器人领域的应用非常广泛&#xff0c;以下是详细介绍&#xff1a; 主要应用方向 环境感知与识别&#xff1a; 物体识别与分类&#xff1a;机器人利用深度学习神经网络能够准确识别周围环境中的各种物体&#xff0c;比如区分不同形状、颜色、材质的物品&…

自动化工具 Gulp

自动化工具 gulp 摘要 概念&#xff1a;gulp用于自动化开发流程。 理解&#xff1a;我们只需要编写任务&#xff0c;然后gulp帮我们执行 核心概念&#xff1a; 任务&#xff1a;通过定义不同的任务来组织你的构建流程。 管道&#xff1a;通过管道方式将文件从一个插件传递…