osgearth嵌入qt详细完整的代码
时间: 2023-08-10 22:07:05 浏览: 214
osgearth在qt Creater下的工程,qt5.12,编译器msvc2017,osg3.4 osgearth2.8
5星 · 资源好评率100%
以下是一个简单的osgEarth嵌入Qt程序的示例代码:
```cpp
#include <osgViewer/Viewer>
#include <osgEarth/Map>
#include <osgEarth/MapNode>
#include <osgEarthUtil/EarthManipulator>
#include <osgEarthQt/ViewerWidget>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
// 创建一个 osgViewer::Viewer 对象
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
// 创建一个 osgEarth::Map 对象
osg::ref_ptr<osgEarth::Map> map = new osgEarth::Map;
// 创建一个 osgEarth::MapNode 对象
osg::ref_ptr<osgEarth::MapNode> mapNode = new osgEarth::MapNode(map);
// 设置地球操作器
osg::ref_ptr<osgEarth::Util::EarthManipulator> manipulator = new osgEarth::Util::EarthManipulator;
manipulator->setHomePosition(osgEarth::Util::Viewpoint(30.0, 120.0, 0.0, 0.0, -90.0, 0.0), 0.0, 0.0, true);
viewer->setCameraManipulator(manipulator);
// 将 osgEarth::MapNode 添加到 osgViewer::Viewer 中
viewer->setSceneData(mapNode);
// 创建一个 osgEarthQt::ViewerWidget 对象
osg::ref_ptr<osgEarthQt::ViewerWidget> widget = new osgEarthQt::ViewerWidget(viewer);
// 设置 osgEarthQt::ViewerWidget 的窗口大小
widget->setMinimumSize(640, 480);
widget->setMaximumSize(1024, 768);
// 显示窗口
widget->show();
// 运行 Qt 应用程序
return app.exec();
}
```
这个程序创建了一个 `osgViewer::Viewer` 对象,一个 `osgEarth::Map` 对象和一个 `osgEarth::MapNode` 对象。然后它设置了一个地球操作器,并将 `osgEarth::MapNode` 添加到 `osgViewer::Viewer` 中。接下来,它创建了一个 `osgEarthQt::ViewerWidget` 对象,并将 `osgViewer::Viewer` 对象传递给它。最后,它显示了 `osgEarthQt::ViewerWidget` 窗口并运行 Qt 应用程序。
阅读全文