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