MITK中org.blueberry.ui.qt 插件功能分析

org.blueberry.ui.qt 插件功能分析

一句话定位

整个 BlueBerry 工作台(Workbench)的 Qt 实现------Eclipse RCP UI 层
(org.eclipse.ui)的 C++/Qt 移植版
,是 MITK 图形界面的"操作系统"。

规模:385 个公共头文件 + internal 目录 338 个文件,是最大的框架插件。

manifest_headers.cmake 显示它只依赖 org.blueberry.core.commands

org.blueberry.core.expressions,而几乎所有 org.mitk.gui.qt.*
功能插件都依赖它
------UI 插件栈的地基。


功能一:定义工作台的全部扩展点(14 个)

它是"UI 契约的制定者"。plugin.xml 中声明了 MITK 所有 UI 插件赖以工作的扩展点

(schema 契约在 schema/*.exsd):

扩展点 用途
org.blueberry.ui.views View(DataManager、分割视图等)注册于此
org.blueberry.ui.editors Editor(StdMultiWidget、MxN Display)注册于此
org.blueberry.ui.perspectives / perspectiveExtensions 布局方案及其追加
org.blueberry.ui.commands / handlers / menus 命令、处理器、菜单贡献
org.blueberry.ui.preferencePages / keywords 设置页
org.blueberry.ui.presentationFactories 换 tab 皮肤(presentation 框架入口)
org.blueberry.ui.tweaklets / services / intro / elementFactories 平台微调点、UI 服务、欢迎页、元素工厂

功能二:实现 Workbench 概念模型(internal/,338 个文件)

  • 窗口层级Workbench → WorkbenchWindow → WorkbenchPage → Perspective → Part(View/Editor)
  • 布局引擎PartSashContainer / LayoutTree(二叉树)/ LayoutPartSash / QtSash
    ------分屏与比例管理
  • Part 管理PartStack(tab 堆叠)、EditorManagerViewFactory、生命周期与激活焦点
  • Presentation 框架StackPresentation / TabbedStackPresentation /
    NativeTabFolder / QCTabBar------tab 页的绘制与交互
  • 拖拽系统DragUtil / QtTracker / DetachedWindow------tab 重排、跨区停靠、拖出浮窗
  • Perspective 持久化:布局保存/恢复(IMemento)

功能三:提供插件开发的公共 API(src/ 顶层)

功能插件(如 datamanager)编程时用的接口全部来自这里:

  • berryIViewPart.h / berryIEditorPart.h / berryIWorkbenchPage.h ------ Part 开发基类与接口
  • berryISelectionService.h ------ 选择服务(跨 View 选择传播机制)
  • berryIEditorInput.h / berryIEditorRegistry.h ------ Editor 输入与注册表
  • AbstractUICTKPlugin ------ UI 插件 Activator 基类

功能四:横切服务子系统(子目录)

目录 内容
commands/ handlers/ actions/ 命令框架:命令定义、处理器绑定、菜单/工具栏 Action
services/ 服务定位器体系(IServiceLocator,按 site 分层的服务查找)
presentations/ 呈现框架公共 API
application/ WorkbenchAdvisor 等应用生命周期钩子(App 启动时定制工作台)
intro/ 欢迎页框架
tweaklets/ 平台适配点(GuiWidgetsTweaklet 等,把 Qt 细节隔离在可替换实现后)
guitk/ util/ model/ GUI 工具事件、几何计算、UI 模型
testing/ UI 测试支持

在依赖栈中的位置

复制代码
org.mitk.gui.qt.*(datamanager、segmentation、mxnmultiwidgeteditor...)
        │ Require-Plugin / 实现其扩展点 / 调用其 API
        ▼
org.blueberry.ui.qt          ← 本插件:工作台实现 + 扩展点定义 + 公共 API
        │ Require-Plugin
        ▼
org.blueberry.core.commands / core.expressions
        │
        ▼
org.blueberry.core.runtime(ExtensionRegistry,解析 plugin.xml)→ CTK

总结

org.blueberry.ui.qt = Eclipse 的 org.eclipse.ui 在 Qt 上的对应物。

它不提供任何医学影像功能,但 MITK 所有可见的 UI 骨架------主窗口、tab 页、

视图停靠、拖拽、菜单、命令、选择广播、perspective 切换------全部由它实现;

功能插件只是往它定义的扩展点里"填内容"。

相关推荐
beibeix20154 天前
CppMicroServices 核心概念:动态服务注册与模块化系统
微服务·mitk
beibeix20155 天前
MITK 工程四大组结构分析
mitk
beibeix20157 天前
MITK plugin.xml 读取解析的实现过程
mitk
beibeix201511 天前
深入解析 MITK/BlueBerry 编辑器:从菜单点击到 QTabBar 的完整架构与呈现链路
mitk