以下是一个简单的继承 osgWidget::Box 的使用案例:
#include <osgWidget/Box>
#include <osgWidget/WindowManager>
class MyBox : public osgWidget::Box
{
public:
MyBox(osgWidget::WindowManager* wm) : osgWidget::Box(wm) {}
virtual void mouseEnterEvent(osgWidget::Widget* widget, float, float, float, float)
{
std::cout << "Mouse entered" << std::endl;
}
virtual void mouseLeaveEvent(osgWidget::Widget* widget, float, float, float, float)
{
std::cout << "Mouse left" << std::endl;
}
};
int main()
{
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
osg::ref_ptr<osgWidget::WindowManager> wm = new osgWidget::WindowManager(viewer.get(), 800, 600, true);
osg::ref_ptr<MyBox> box = new MyBox(wm.get());
box->setOrigin(200, 200);
box->resize(200, 100);
box->setColor(osg::Vec4(1.0, 0.0, 0.0, 1.0));
wm->addChild(box.get());
viewer->setSceneData(wm.get());
return viewer->run();
}
这个例子创建了一个自定义的 osgWidget::Box 类,并覆盖了其鼠标进入和鼠标离开事件。然后,它在窗口管理器中添加了一个 MyBox 实例,并将其设置为场景数据,最后启动了查看器。当鼠标进入或离开 MyBox 时,相应的信息将在控制台上打印出来。
osgWidget 继承使用 细节处理
猜你喜欢
转载自blog.csdn.net/vcit102/article/details/130316414
今日推荐
周排行