![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CTK框架
文章平均质量分 75
CTK框架
turbolove
学习-模仿-创造
展开
-
CTK框架 - 将菜单按钮写到插件中
之前我们在的两个插件Core和About,在Core和About中加入了界面,并且Core中插入了一个菜单,点击之后弹出About界面。这里就不贴优化部分的代码了,思路就是使用信号去处理界面的析构,否则会因为析构代码不在界面线程调用而崩溃。我这里的思路是使用事件或者是在Core中加注册的服务来注册菜单。之后点击菜单的时候发送事件。之前的代码关闭的时候mainwindow析构还会报一个线程错误,我们把析构使用信号去处理。我们现在来用之前的知识把菜单改成注册的,并且点击之后弹出About界面。原创 2023-07-03 13:47:08 · 275 阅读 · 0 评论 -
CTK框架 - 服务工厂
服务工厂其实就是将之前的继承的服务修改成通过服务工厂来生产服务:在服务中可以知道是哪个其他插件在使用它;懒汉式使用服务,需要的时候才new;工厂其他插件使用有服务工厂和使用无服务工的服务,没有任何区别,代码都一样;可根据需要创建多种实现的服务,就是:多种服务对应一个插件。原创 2023-07-03 11:30:17 · 324 阅读 · 0 评论 -
CTK框架 - 事件监听
CTK一共有三种事件可以监听:框架事件、插件事件、服务事件。但是这些事件只有再变化时才能监听到,如果已经变化过后,进入一个稳定的状态,这时才去监听,那么是无法监听到的。针对整个框架的,相当于只有一个,因为框架只有一个,但是这里有个问题,就是监听这个事件是在框架初始化之后的,所以根本没法监听到框架事件的初始化,只能监听到结束的事件。在安装、启动插件的过程中呈现的,主要就是插件的一个状态的变化。在创建、回收插件时的事情,主要体现在服务的注册和注销。之后运行代码即可监听到对应的信息。将监听在main函数中加上。原创 2023-07-03 09:35:28 · 202 阅读 · 0 评论 -
CTK框架 - 插件依赖关系 - 给插件加上界面
插件依赖的插件由Require-Plugin指定的加上界面之后,我们在调用popWindow的时候我们就得到了一个界面,并且点击发送事件的时候也会打印我们之前事件打印的那句话。原创 2023-07-01 16:40:25 · 751 阅读 · 0 评论 -
CTK框架 - 通信 - 事件通信和信号槽通信
CTK框架中的事件监听,即观察者模式流程上是这样:接收者注册监听事件->发送者发送事件->接收者接收到事件并响应;相比调用插件接口,监听事件插件间依赖关系更弱,不用指定事件的接收方和发送方是谁。比如我们需要弹出一个界面,可以使用事件来弹出。通信主要使用了ctkEventAdmin结构体,主要定义了如下接口:接口名称作用postEvent类通信形式,异步发送事件sendEvent类通信形式,同步发送事件信号槽通信形式,发送事件信号槽通信形式, 取消发送事件。原创 2023-07-01 13:43:04 · 686 阅读 · 0 评论 -
CTK框架 - 通信 - 插件服务注册和调用
我们在上一篇文章中提到了activator激活类,我们在激活类中提供该类的成员指针变量,在start的时候将该类new出来,头文件声明变量的部分不展示代码,这里展示new对象的代码。服务就是提供的接口类,我们使用注册器去注册服务,然后使用插件对象去实现对应的服务,调用的时候获取服务,之后按照虚基类提供的方法去调用即可调用到对应插件的服务。在插件加载完成之后调用插件的服务,将下面代码插入正确的位置,我这里是在代码最后插入该段代码即可。上面的代码可以调用注册的两个接口,并且输出对应的输出。原创 2023-06-30 10:52:02 · 1116 阅读 · 0 评论 -
CTK框架 - 第一个插件
然后将我们上一篇文章提到的CMakeList.txt替换到这个项目中,并且作出了一点小的调整,修改了项目的名称,并且添加了自动拷贝对应的动态库到运行目录。最好和工程名称一致,因此我这里写的是Core,工程名称是CMakeLists.txt中的project的名称。我们来写一个Core插件作为我们的核心插件,在这之前我们需要知道CTK插件的编写规则。这个时候编译运行,插件工厂启动成功,说明我们的项目配置没有问题,即可进行下一步。每个插件都有自己的注册器,因此我们需要给我们的插件写一个注册器。原创 2023-06-29 13:38:25 · 1023 阅读 · 0 评论 -
CTK框架介绍和环境搭建
CTK为支持生物医学图像计算的公共开发包,其全称为 Common Toolkit。CTK插件框架的设计有很大的灵感来自OSGi并且使得应用程序由许多不同的组件组合成一个可扩展模型。这个模型允许通过那些组件间共享对象的服务通信。DICOM:提供了从 PACS 和本地数据库中查询和检索的高级类。包含 Qt 部件,可以轻松地设置服务器连接,并发送查询和查看结果。:目标是创建 DICOM Part 19 Application Hosting specifications 的 C++ 参考实现。原创 2023-06-29 08:41:26 · 1666 阅读 · 2 评论