CTK Plugin Framework插件框架学习1--Qt编译CTK

一、CTK简介

CTK是什么

CTK 为支持生物医学图像计算的公共开发包,其全称为 Common Toolkit


CTK 提供了什么

当前,CTK 工作的主要范围包括:

  • DICOM:提供了从 PACS 和本地数据库中查询和检索的高级类。包含 Qt 部件,可以轻松地设置服务器连接,并发送查询和查看结果。

  • DICOM Application Hosting:目标是创建 DICOM Part 19 Application Hosting specifications 的 C++ 参考实现。它提供了用于创建主机和托管应用程序的基础设。

  • Widgets:用于生物医学成像应用的 Qt Widgets 集合。

  • Plugin Framework:用于 C++ 的动态组件系统,以 OSGi 规范为模型。它支持一个开发模型,在这个模型中,应用程序(动态地)由许多不同(可重用的)组件组成,遵循面向服务的方法。

  • Command Line Interfaces:一种允许将算法编写为自包含可执行程序的技术,可以在多个终端用户应用程序环境中使用,而无需修改。


CTK的目标

  • 为医学成像提供一组统一的基本功能;
  • 促进代码和数据的交互及结合;
  • 避免重复开发;
  • 在工具包(医学成像)范围内不断扩展到新任务,而不会增加现有任务的负担;
  • 整合并适应成功的解决方案。

二、CTK下载

CTK源码下载:https://github.com/commontk/CTK
CTKData源码下载:https://github.com/commontk/CTKData

在这里插入图片描述
将两个文件分别解压,把CTKData-master复制到CTK-master文件夹中,并将CTKData-master重命名为CTKData

在这里插入图片描述


三、MSVS编译

3.1、Qt Creator 下CMake配置

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


3.2、CTKData配置

为了避免编译的时候去github自动下载,因为经常下载失败导致编译失败,所以我们手动下载CTKData,配置它的路径

打开CTK-master/CMakeExternals/CTKData.cmake

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


3.3、生成库开关配置

源码默认只编译生成CTKCore.dll,但是我们需要CTKPluginFramework.dll和CTKWidgets.dll等其它库,所以需要我们将编译开关打开

打开CTK-master/CMakeLists.txt

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不对CTK进行调试,为了加快编译速度,要关闭BUILD_TESTING,同时不关闭编译还有可能会编译出错
在这里插入图片描述


3.4、安装配置

默认配置下CTK在编译时是不会自动安装的,因此需要自己进行安装步骤和安装路径的配置

打开CTK-master/SuperBuild.cmake

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


3.5、编译

管理员身份运行 Qt Creator !!!

管理员身份运行 Qt Creator !!!

管理员身份运行 Qt Creator !!!

在这里插入图片描述
用 Qt Creator 打开 CTK-master/CMakeLists.txt

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

菜单栏【构建】–>【执行CMake】–>【构建项目“CTK”】

在这里插入图片描述

然后就是漫长的等待…

编译结束

在这里插入图片描述

编译生成的库(导入Qt工程中使用)

在这里插入图片描述


3.6、测试

随便新建一个Qt UI工程,注意:选择Kit的时候要选择我们add的CMake

在这里插入图片描述


可以正常运行

在这里插入图片描述


将编译生成的CTK文件夹复制到新建的工程文件夹下

在这里插入图片描述

在工程文件(*.pro)中导入CTK库

# CTK 安装路径
CTK_INSTALL_PATH = $$PWD/CTK

# CTK 相关库所在路径(例如:CTKCore.lib、CTKWidgets.lib)
CTK_LIB_PATH = $$CTK_INSTALL_PATH/lib/ctk-0.1

# CTK 相关头文件所在路径(例如:ctkPluginFramework.h)
CTK_INCLUDE_PATH = $$CTK_INSTALL_PATH/include/ctk-0.1

# 相关库文件(CTKCore.lib、CTKWidgets.lib)
LIBS += -L$$CTK_LIB_PATH -lCTKCore -lCTKWidgets

INCLUDEPATH += $$CTK_INCLUDE_PATH

在这里插入图片描述


更改main.cpp中的代码

#include "mainwindow.h"

#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 a(argc, argv);
    //MainWindow w;
    //w.show();

    //=======================================================================
    // 可折叠按钮
    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 a.exec();
}

在这里插入图片描述


构建运行,出现CTKWidget控件,则说明编译成功!

在这里插入图片描述


四、编译结果

编译环境

  • Qt:5.14.2
  • CMake:3.15.5

编译输出

链接:https://pan.baidu.com/s/1_YzdSqCWczbmwcCCdVH4KQ
提取码:zmlw

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝勒里恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值