一直比较推崇QT这个界面库,所以打算把osg嵌入到QT里面做一个QWidget的子控件。
在查阅了官方的osgViewerQT后,决定写一个子类,同时继承osgViewer::Viewer和QGLWidget,用一个Widget来显示osg的单Viewer的场景。
class OsgQtWidget : public QGLWidget, public osgViewer::Viewer
{
Q_OBJECT
public:
OsgQtWidget(QWidget *parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags flags = 0);
OsgQtWidget(osgViewer::ViewerBase::ThreadingModel threadingModel = osgViewer::Viewer::SingleThreaded);
~OsgQtWidget();
void setScene();
osg::Camera* createCamera( int x, int y, int w, int h, const std::string& name="", bool windowDecoration=false );
virtual void paintGL();
private:
protected:
QTimer timer;
};