870920 Menu

JUCE类库PreferencesPanel详解

PreferencesPanel

图  PreferencesPanel 图标式选项卡

PreferencesPanel图标式选项卡、TabbedComponent常规选项卡和ToolBar工具栏这三者有异曲同工之妙:

  • TabbedComponent是无图标按钮,而PreferencesPanel则是带文本的图标式按钮。
  • TabbedComponent可以设置选项卡按钮出现在任意四个边处,PreferencesPanel的图标式按钮只能位于顶端,即典型的MAC机“参数设置”对话框的风格。
  • PreferencesPanel是抽象基类,派生类需实现纯虚函数createComponentForPage(),该函数负责创建每个图标所关联的子组件。TabbedComponent则没这么复杂,直接添加子组件即可,而子组件的创建与其无关,是内容组件的事。也就是:TabbedComponent与其所显示的子组件是平级的关系,共同隶属于内容组件,而PreferencesPanel与其所显示的子组件是包含关系,子组件由PreferencesPanel所创建。
  • ToolBar只有图标显示区,而没有额外的子组件显示区,即:该控件不是用来切换并显示子组件的。TabbedComponent和PreferencesPanel有子组件显示区,二者可切换显示任意Component的派生类。

使用PreferencesPanel的流程有2:

  1. 自定义图标式选项卡类,继承自PreferencesPanel。构造函数中addSettingsPage()添加所需的每个图标及其文本名称。在继承自基类的纯虚函数createComponentForPage()中,基于每个图标的文本名称创建所对应的子组件。所创建的子组件由本类托管
  2. 内容组件类中声明PreferencesPanel对象。需显示时,该对象调用showInDialogBox()函数。

示例代码

PreferencesPanel直接继承自Component,其新增的成员函数:
 createComponentForPage () 纯虚函数,基于选项卡文本创建所对应的每个子组件
 addSettingsPage () 添加选项卡文本及其图标
 setCurrentPage () 设置当前所显示的子组件
 setButtonSize () 设置选项卡图标按钮的大小
 getButtonSize () 返回选项卡图标按钮的大小
 showInDialogBox () 在DialogWindow中显示本组件