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还是不明白是怎么建立的