CTK框架——CTK Widgets快速入门

CTK框架——CTK Widgets快速入门

一、CTK Widgets模块简介

1、CTK Widgets模块简介

CTK Widgets模块是CTK封装的用于通用功能以及生物医学成像专用领域的Qt组件库。
CTK中所有部分都有大量的测试相关代码,在源码目录下Libs/xxx/Testin/Cpp目录中。
CTK官方文档:
http://www.commontk.org/docs/html/modules.html
ImageGallery演示了CTK Widgets模块大部分组件的效果:
http://www.commontk.org/index.php/Documentation/ImageGallery

2、CTK Widgets构成

CTK Widgets模块主要包含4部分:

A、DICOM Widgets:用于支持医学数字影像通信(DICOM)领域的应用

B、Visualization VTK Widgets:支持VTK的组件

C、Widgets:通用的功能组件





D、XNAT Widgets:支持XNAT的组件
目前只包含一个类ctkXnatLoginDialog。
XNAT是华盛顿大学神经信息学研究小组开发的开源成像信息平台,最初在华盛顿大学的巴克纳实验室开发,目前由哈佛大学开发。

二、CTK Widgets快速入门

1、导入CTK Widgets模块

CTKWidgets模块使用与其它第三方库一样。
创建一个QtGUI应用并在工程文件中加入CTKWidgets模块。

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = HelloCTKWidget
TEMPLATE = app

#CTK安装路径
CTK_INSTALL_PATH = /usr/local

#CTK插件相关库所在路径
CTK_LIB_PATH = $$CTK_INSTALL_PATH/lib/ctk-0.1

#CTK插件相关头文件所在路径
CTK_INCLUDE_PATH = $$CTK_INSTALL_PATH/include/ctk-0.1

LIBS += -L$$CTK_LIB_PATH -lCTKCore -lCTKWidgets

INCLUDEPATH += $$CTK_INCLUDE_PATH                $$CTK_INCLUDE_FRAMEWORK_PATH

SOURCES += main.cpp        Widget.cpp

HEADERS  += Widget.h

2、使用CTK Widgets模块中的组件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QGridLayout>

#include <ctkCheckablePushButton.h>
#include <ctkCollapsibleButton.h>
#include <ctkColorPickerButton.h>
#include <ctkRangeWidget.h>
#include <ctkCollapsibleGroupBox.h>
#include <ctkCoordinatesWidget.h>
#include <ctkTreeComboBox.h>
#include <ctkSearchBox.h>
#include <ctkDirectoryButton.h>
#include <ctkCheckableComboBox.h>
#include <ctkMaterialPropertyWidget.h>
#include <ctkMatrixWidget.h>
#include <ctkPathLineEdit.h>

class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = 0)
    {
        m_layout = new QGridLayout(this);
        //复选按钮
        m_ctkCheckableButton = new ctkCheckablePushButton(this);
        m_ctkCheckableButton->setText("ctkCheckablePushButton");
        //可折叠按钮
        m_ctkCollapsibleButton = new ctkCollapsibleButton(this);
        m_ctkCollapsibleButton->setText("ctkCollapsibleButton");
        m_layout->addWidget(m_ctkCheckableButton, 0, 0, 1, 2);
        m_layout->addWidget(m_ctkCollapsibleButton, 0, 2, 1, 2);
        //颜色拾取器
        m_ctkColorPickerButton = new ctkColorPickerButton(this);
        m_ctkColorPickerButton->setText("ctkColorPickerButton");
        //滑块
        m_ctkRangeWidget = new ctkRangeWidget(this);
        m_layout->addWidget(m_ctkColorPickerButton, 1, 0, 1, 2);
        m_layout->addWidget(m_ctkRangeWidget, 1, 2, 1, 2);

        //分组框
        m_ctkCollapsibleGroupBox = new ctkCollapsibleGroupBox(this);
        m_ctkCollapsibleGroupBox->setTitle("GroupBox");
        m_layout->addWidget(m_ctkCollapsibleGroupBox, 3, 0, 3, 4);

        //坐标组件
        m_ctkCoordinatesWidget = new ctkCoordinatesWidget(this);

        //树形组合狂
        m_ctkTreeComboBox = new ctkTreeComboBox(this);
        m_ctkTreeComboBox->addItems(QStringList() << "A" << "B");
        m_layout->addWidget(m_ctkCoordinatesWidget, 6, 0, 1, 2);
        m_layout->addWidget(m_ctkTreeComboBox, 6, 2, 1, 2);
        //搜索框
        m_ctkSearchBox = new ctkSearchBox(this);
        //目录按钮
        m_ctkDirectoryButton = new ctkDirectoryButton(this);
        m_layout->addWidget(m_ctkSearchBox, 7, 0, 1, 2);
        m_layout->addWidget(m_ctkDirectoryButton, 7, 2, 1, 2);
        //带复选功能的组合框
        m_ctkCheckableComboBox = new  ctkCheckableComboBox(this);
        m_ctkCheckableComboBox->addItems(QStringList() << "A" << "B");
        //路径行编辑框
        m_ctkPathLineEdit = new ctkPathLineEdit(this);
        m_ctkPathLineEdit->addCurrentPathToHistory();
        m_layout->addWidget(m_ctkCheckableComboBox, 8, 0, 1, 2);
        m_layout->addWidget(m_ctkPathLineEdit, 8, 2, 1, 2);
        //材料属性组件
        m_ctkMaterialPropertyWidget = new ctkMaterialPropertyWidget(this);
        //矩阵组件
        m_ctkMatrixWidget = new ctkMatrixWidget(this);
        m_layout->addWidget(m_ctkMaterialPropertyWidget, 9, 0, 1, 2);
        m_layout->addWidget(m_ctkMatrixWidget, 9, 2, 1, 2);

        setLayout(m_layout);
    }
private:
    QGridLayout* m_layout;
    ctkCheckablePushButton* m_ctkCheckableButton;
    ctkCollapsibleButton* m_ctkCollapsibleButton;
    ctkColorPickerButton* m_ctkColorPickerButton;
    ctkRangeWidget* m_ctkRangeWidget;
    ctkCollapsibleGroupBox* m_ctkCollapsibleGroupBox;
    ctkCoordinatesWidget* m_ctkCoordinatesWidget;
    ctkTreeComboBox* m_ctkTreeComboBox;
    ctkSearchBox* m_ctkSearchBox;
    ctkDirectoryButton* m_ctkDirectoryButton;
    ctkCheckableComboBox* m_ctkCheckableComboBox;
    ctkMaterialPropertyWidget* m_ctkMaterialPropertyWidget;
    ctkMatrixWidget* m_ctkMatrixWidget;
    ctkPathLineEdit* m_ctkPathLineEdit;
};

#endif // WIDGET_H
#include "Widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

3、CTK Widgets应用编译结果

4、CTK Widgets学习示例

CTK Widgets测试代码位于CTK/Libs/Widgets/Testing/Cpp中,可以作为学习示例。

原文地址:http://blog.51cto.com/9291927/2120383

时间: 2024-07-31 09:12:20

CTK框架——CTK Widgets快速入门的相关文章

CTK框架——CTK Plugin Framework快速入门

CTK框架--CTK Plugin Framework快速入门 一.CTK Plugin Framework简介 1.CTK Plugin Framework简介 CTK Plugin Framework基于Qt Plugin System和Qt Service Framework实现,并且增加了以下特性来扩展:A.插件元数据(由MANIFEST.MF文件提供):B.一个定义良好的插件生命周期和上下文:C.综合服务发现和注册:在Qt Plugin System中,插件的元数据由JSON文件提供.

实体框架(Entity Framework)快速入门--实例篇

在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 第一步:创建控制台项目 这个就不多说了,如果新建项目你还不知道,那先去学学基础吧. 第二步:创建实体模型 在项目上右击 添加新建项目→Ado .Net 实体数据模型 如下图所示: 第三步:与现有的 数据库 进行连接生成EF实体 在做这步之前,首先确定你是否已经有现有数据库,当然在这提供我自己的数据库脚本.

微服务的入门级微框架Spring Boot快速入门

详情请交流  QQ  709639943 00.微服务的入门级微框架Spring Boot快速入门 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

Spring MVC入门第1天--框架说明与快速入门

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.06.29 lutianfei none springmvc框架 springmvc业务流程框架 springmvc框架组件说明 Spring MVC入门程序 配置前端控制器 配置处理器适配器 开发Handler 视图编写 配置Handler 配置处理器映射器 配置视图解析器 部署调试 非注解的处理器映射器 和 适配器 非注解的处理器映射器 非注解的处理器适配器 springmvc的默认加载 注解的处理器映射器和适配器

【Android】ORM数据库框架之GreenDao快速入门与使用

先润润嗓子,听我细细道来: 今天我们来介绍一款性能非常好的orm数据库框架GreenDao,相信大家一定对它有所耳闻,或者已经在项目中在使用它了,虽然我在去年就开始使用这款框架,但是一直没有做过系统的整理和梳理,有些地方也是含糊不清,今天就和大家一起来揭开GreenDao的神秘面纱. GreenDao github地址:https://github.com/greenrobot/greenDAO GreenDao官网地址:http://greenrobot.org/greendao/,包含详细的

Quartz.NET开源作业调度框架系列(一):快速入门step by step-转

Quartz.NET是一个被广泛使用的开源作业调度框架 , 由于是用C#语言创建,可方便的用于winform和asp.net应用程序中.Quartz.NET提供了巨大的灵活性但又兼具简单性.开发人员可用它快捷的创建并执行一个自动化作业.Quartz.NET有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等. 1 为什么选择Quartz.NET 在大部分的应用中,都需要对数据库进行定期备份 , 这个备份任务可以是每天晚上12:00或者每周星期二晚上12:00,或许仅仅每个月的最

Selenium框架切换-----Selenium快速入门(七)

上一篇说了窗口的切换,本篇说说框架的切换. 切换框架:是指切换html中的iframe标签元素或者frame标签元素,注意,并不包括frameset 以下是常用的方法: 方法 说明 WebDriver switchTo().frame(int index) 通过索引切换到指定的框架,若框架不存在,则抛出异常 NoSuchFrameException WebDriver switchTo().frame(String nameOrId) 通过框架的name或者id切换到指定的框架,若框架不存在,则

PDF.NET SOD 开源框架红包派送活动 &amp;&amp; 新手快速入门指引

一.框架的由来  快速入门 有关框架的更多信息,请看框架官方主页! 本套框架的思想是借鉴Java平台的Hibernate 和 iBatis 而来,兼有ORM和SQL-MAP的特性,同时还参考了后来.NET的LINQ(本框架成型于2006年,当时还未听说过LINQ)使用风格,设计了OQL查询表达式.本框架的设计思想是通用的,完全可以移植到Java 平台,现在只提供了.NET平台的实现,暂且将本框架命名为 PDF.NET 从2013.10.1日起,原PDF.NET 将更名为 SOD one SQL-