870920 Menu

JUCE类库常规控件之Viewport

Viewport视图相当于某个组件的“容器”,当该组件的尺寸大于Viewport的尺寸时,可显示水平和垂直的滚动条,以查看该组件的更多区域。Viewport本身也是组件,因此,内容组件类中声明、创添显设、布局销毁Viewport类的对象与其它控件同理。比如:

使用Viewport时,经常需实现自动滚屏功能。比如:在视图的子组件中鼠标拖放东西,当靠近视图的边界时,自动开始滚屏。实现此功能的关键思路有4:(网站发布,略)

Viewport继承自Component、ComponentListener、ScrollBar::Listener,主要方法:(略)

如需实现更复杂的功能,比如转动鼠标滚轮键,左右滚屏,或者按下Ctrl键的同时转动鼠标滚轮,所容纳的子组件进行缩放,等等,可派生Viewport的子类,重写mouseWheelMove()等虚函数。

与Viewport关系比较密切的类为ScrollBar滚动条。ScrollBar可自动出现在Viewport和ListBox等控件中,通常无需直接创建并处理之。但某些自定义的内容组件需使用滚动条来改变视图区域。使用流程有二:

  1. 内容组件类继承ScrollBar::Listener,实现其纯虚函数,以捕获并处理ScrollBar的滚动消息。
  2. 内容组件类中声明并使用ScrollBar对象,绑定捕获器(将内容组件注册为监听者)。