osgUI.Tab 是 OpenSceneGraph 中的一个用户界面组件,表示一个选项卡页。
class Tab : public CompositeElement;
继承自 CompositeElement,并实现以下接口:
virtual const char* className() const override;
virtual void addChild(Control* control) override;
virtual void setControlArea(const osg::Vec4& controlArea) override;
virtual void setColor(const osg::Vec4& color) override;
virtual void setBackgroundColor(const osg::Vec4& color) override;
virtual void setBorderColor(const osg::Vec4& color) override;
virtual void setCornerRadius(float radius) override;
Tab(const std::string& text);
构造函数需要传入一个选项卡页的标题文本。
本控件可以添加子控件。在添加子控件方法中,除了调用父类的方法外,还比较特殊的是,它只能添加 TabPage
类型的子控件,即选项卡页对应的页面。
void addChild(Control* control) override;
本控件会根据 TabPage
的布局来自动调整自身的大小和位置,所以不需要手动设置控件区域。
下面这些接口支持设置本控件的颜色。
void setColor(const osg::Vec4& color) override;
void setBackgroundColor(const osg::Vec4& color) override;
void setBorderColor(const osg::Vec4& color) override;
颜色值使用 osg::Vec4 类型表示,含义分别是 RGBA,取值范围 [0, 1]。
可以通过下面的接口控制本控件的圆角半径。
void setCornerRadius(float radius) override;
参数 radius
表示圆角半径,单位是像素。
auto tabControl = new osgUI::Tab("Tab 1");
auto tabPage = new osgUI::TabPage(width, height);
// 添加子控件
tabControl->addChild(tabPage);
// 设置颜色和边框
tabControl->setBackgroundColor(osg::Vec4(0.2, 0.2, 0.2, 1.0));
tabControl->setBorderColor(osg::Vec4(0.3, 0.3, 0.3, 1.0));
tabControl->setCornerRadius(10.0f);