【CTK】基于C++和Qt的CTK框架搭建和插件开发

本文介绍了CommonToolkit(CTK),一个支持生物医学图像计算的公共开发包,特别关注其模块化结构,如DICOM功能、QtWidgets、CTKPluginFramework(基于OSGi和QtCreator)以及CommandLineInterfaces。文章还提供了Qt插件开发实例和核心框架结构的概述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CTK基础

Common Toolkit:支持生物医学图像计算的公共开发包。

参考:
http://www.commontk.org/
https://github.com/commontk

CTK模块

在设计之初 CTK 针对医学成像和建模领域,包含的内容很多,Plugin Framework、Widgets、DICOM……可以选择对自己有用的模块,当前CTK的主要范围主题包括:

(1) DICOM
包含Qt小部件,可以轻松地建立服务器连接,并发送查询和查看结果。DCMTK用作底层工具包。

(2) Widgets
用于生物医学成像应用的Qt Widgets控件集合库。

(3)Plugin Framework
CTK Plugin Framework 同时借鉴了 OSGi 和 Qt Creator 的思想。
作为 CTK 的核心,CTK Plugin Framework 实现了几乎完整的 OSGi 框架 API,所以只要有模块化需求,完全可以在任何 C++ 项目中使用 CTK。

CTK插件框架可以简单地描述为c++的动态组件系统。它直接基于OSGi Release 4 4.2版,其中一些API是受即将发布的4.3版的启发而设计的。像OSGi这样的行业标准为CTK插件框架带来了稳定的API和规范的好处。

CTK 插件相关的 API 非常简单,核心 API 不到 25 个类。这个核心 API 足以编写插件、安装、启动、停止、更新和卸载它们,并且还包含了所有的监听类。

(4)Command Line Interfaces
一种允许以自包含的可执行文件形式编写的算法在多个最终用户应用程序环境中使用而无需修改的技术。

CTK插件

参考: CTK完整教程(OSGI for C++ 实现 C++ Qt 模块化)

CTK插件的设计通常涉及到以下关键部分:接口定义、服务实现和插件激活器。

  • ctk框架核心:框架和插件——框架加载插件,框架和插件之间的通讯使用事件或者信号槽。
  • 框架的核心:框架和需要调用的服务类。
  • 插件的核心:实现类和激活类。

实例代码:

  1. Qt插件开发
  2. https://github.com/myhhub/CTK-project/blob/main/UseCTKWidgets/main.cpp

eg. 插件框架主函数:

#include <QApplication>
#include <QFormLayout>
#include <QVBoxLayout>

#include <ctkCheckablePushButton.h>
#include <ctkCollapsibleButton.h>
#include <ctkColorPickerButton.h>
#include <ctkRangeWidget.h>

int main(int argc, char* argv[])
{
  QApplication app(argc, argv);

  // 可折叠按钮
  ctkCollapsibleButton* buttons = new ctkCollapsibleButton("Buttons");

  // 可勾选按钮
  ctkCheckablePushButton* checkablePushButton = new ctkCheckablePushButton();
  checkablePushButton->setText("Checkable");

  // 颜色拾取器
  ctkColorPickerButton* colorPickerButton = new ctkColorPickerButton();
  colorPickerButton->setColor(QColor("#9e1414"));

  ctkCollapsibleButton* sliders = new ctkCollapsibleButton("Sliders");

  QFormLayout* buttonsLayout = new QFormLayout;
  buttonsLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
  buttonsLayout->addRow("ctkCheckablePushButton", checkablePushButton);
  buttonsLayout->addRow("ctkColorPickerButton", colorPickerButton);
  buttons->setLayout(buttonsLayout);

  QVBoxLayout* topLevelLayout = new QVBoxLayout();
  topLevelLayout->addWidget(buttons);
  topLevelLayout->addWidget(sliders);

  QFormLayout* slidersLayout = new QFormLayout;
  ctkRangeWidget* rangeWidget = new ctkRangeWidget();
  slidersLayout->addRow("ctkRangeWidget", rangeWidget);
  sliders->setLayout(slidersLayout);

  QWidget topLevel;
  topLevel.setLayout(topLevelLayout);
  topLevel.show();

  return app.exec();
}
CTK(Common Toolkit)是一个基于Qt的开源框架,旨在为医学图像处理分析提供易于使用的工具。以下是在C++ Qt搭建CTK框架的步骤: 1. 下载CTK框架 可以从CTK官网下载CTK框架。下载后,解压缩文件到本地文件夹。 2. 在Qt中添加CTK框架Qt中选择菜单栏的“项目”->“添加库”,然后选择“外部库”->“Qt添加库向导”。在向导中,选择“静态库”,然后选择CTK框架的文件夹路径。在完成添加后,确保在项目文件中包含CTK库的头文件库文件。 3. 创建CTK模块 在Qt中创建一个新的Qt工程,并添加一个CTK模块。在项目视图中,右键单击项目并选择“添加新项”,然后选择“CTK模块”。在向导中,输入模块名称模块路径,选择要使用的模块类型。在完成向导后,Qt将自动创建一个CTK模块,并将其添加到项目中。 4. 编写CTK插件CTK模块中,可以创建一个或多个CTK插件CTK插件是可加载的Qt插件,用于扩展应用程序的功能。在Qt中创建一个新的Qt工程,并添加一个CTK插件。在项目视图中,右键单击项目并选择“添加新项”,然后选择“CTK插件”。在向导中,输入插件名称插件路径,选择要使用的插件类型。在完成向导后,Qt将自动创建一个CTK插件,并将其添加到项目中。 5. 将CTK插件添加到应用程序中 在应用程序中,可以通过加载CTK插件来添加新功能。在Qt中,可以使用QPluginLoader类来加载CTK插件。使用QPluginLoader类加载CTK插件后,可以使用插件的接口来访问其功能。 以上就是在C++ Qt搭建CTK框架的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值