文章目录
一、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