1)OSG与QT单文档视图的结合

osgQT.lib缺失,需要单独编译,编译时出现了很多问题,后来没解决,就放弃了。

在网上看到一篇很好的博文,http://yrcpp.blog.163.com/blog/static/1260452592014102341533496/        下载了他的源码,研究了一下。

直接提供了包含了osgQT中的一个类GraphicsWindowQt,所以就不用编译osgQT了,也算偷了懒。

现对在QT界面中嵌入osg的方法总结如下:

0   MyOSGQT为qt界面类;OsgViewerWidget类;GraphicsWindowQt类

1   MyOSGQT类中是对窗体的定义。

     包括控件QWidgt,此控件的类提升为OsgViewerWidget,用于加载osgview。

     信号槽,控件QWidgt接收,调用OsgViewerWidget::openFile()函数

2   OsgViewerWidget

     该类继承了osgView::Viewer和osgQt::GLWidget。其中osgQt::GLWidget来自GraphicsWindowQt类

  构造函数中定义了图形设备类,表达一个图形窗口,并设置了操纵器、相机、事件处理               

  void paintEvent( QPaintEvent* event )方法,实现连续刷新

    void resizeEvent( QResizeEvent* event )方法,实现在窗口大小变化时,设置viewport和camera投影矩阵?

    void openFile()  打开osg模型

3  main

   调用qt窗体。

main调用MyOSGQT,MyOSGQT调用ui_MyOSGQT,ui_MyOSGQT调用OsgViewerWidget,OsgViewerWidget调用GraphicsWindowQt。

qt界面布局的设计需要另外学习

QWidget是应用程序的主窗口

布局管理器:  QHBoxLayout在水平方向上排列窗口部件,从左到右

                        QVBoxLayout在竖直方向上排列窗口部件,从上到下

                        QGridLayout把窗口部件排列在一个网格中

水平和垂直的布局大致懂了,但是splitter还是不明白是怎么建立的

原文地址:https://www.cnblogs.com/hanmolabi/p/7309923.html