870920 Menu

JUCE常规控件之MultiDocumentPanel

MultiDocumentPanel与Viewport有异曲同工之妙,二者均继承自Component;均用来容纳并显示内容组件(组件容器),并且添加内容组件均通过特定的函数来完成,而不是Component::addAndMakeVisible();二者所容纳并显示的内容组件通常均作为GUI应用程序的主操作区,也就是文档区、内部数据的UI显示或交互区。

MultiDocumentPanel与ViewPort的区别

  • Viewport仅容纳并显示一个组件,相当于一个单组件容器,或者说是单文档面板。MultiDocumentPanel则可以容纳多个组件,相当于一个多文档面板。
  • MultiDocumentPanel中,同一时间最多只能有一个内容组件处于“激活”状态。
  • 当内容组件的大小超过自身大小时,Viewport可自动显示滚动条。MultiDocumentPanel则不显示。
  • MultiDocumentPanel提供了对内容组件的更多管理功能,比如添加、关闭、激活、全屏显示等等,并可设置自身的样式(选项卡式和浮动式)。这一点,在编写MDI多文档界面的应用程序时非常有用。
  • 浮动模式下,MultiDocumentPanel内部使用MultiDocumentPanelWindow来容纳所添加的每个组件。而此时,MultiDocumentPanel则用来容纳一到多个MultiDocumentPanelWindow。
  • Viewport是普通类,直接可用。MultiDocumentPanel则是抽象基类,必须派生该类的子类。

MultiDocumentPanel的枚举值(布局模式)
 MultiDocumentPanel::FloatingWindows 浮动式显示每个内容组件
 MultiDocumentPanel::MaximisedWindowsWithTabs 选项卡式显示所有内容组件

MultiDocumentPanel类的重要成员函数
 tryToCloseDocument () 纯虚函数。尝试关闭某个组件时自动调用此函数
 activeDocumentChanged () 某个组件的激活状态发生改变时自动调用此函数
 addDocument () 添加内容组件
 closeDocument () 关闭已添加的某个内容组件
 closeAllDocuments () 尝试关闭所有文档
 getNumDocuments () 返回所添加的组件数量
 getDocument () 基于给出的索引返回某个已添加的组件
 getActiveDocument () 返回当前处于激活状态或拥有焦点的组件
 setActiveDocument () 将给出的组件设置为激活状态或置于前面
 setMaximumNumDocuments () 设置可添加的组件上限(最大数量)
 useFullscreenWhenOneDocument () 如果仅有一个组件,是否使其全屏显示
 isFullscreenWhenOneDocument () 仅有一个组件时,是否设置了全屏模式
 setLayoutMode () 设置布局模式
 getLayoutMode () 返回当前的布局模式
 setBackgroundColour () 设置本组件的背景色
 getCurrentTabbedComponent() 如果处于选项卡模式, 则返回所用的TabbedComponent