I am trying to translate my objects in scene, when the right mouse button is pressed. But it is not moving. Pls check the snippet.
[code] //CSGraphicsView //.h class CSGraphicsView : public osgQt::GLWidget { Q_OBJECT public: CSGraphicsView(QWidget* parent=0); ~CSGraphicsView(); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); }; #endif // GVIEW_H ////////////////////////////////////////////.cpp void CSGraphicsView::mousePressEvent(QMouseEvent *e) { if(e->button()==Qt::LeftButton) { QMessageBox msg; msg.setText("Left Mouse pressed"); msg.exec(); } else if(e->button()==Qt::RightButton) { //QMessageBox msg; //msg.setText("Right Mouse pressed"); //msg.exec(); ViewerWidget* viewerWid = qobject_cast<ViewerWidget*>(parent()); viewerWid->getView()->getCamera()->setViewMatrix(::osg::Matrix::translate(1000.5, 0.0, 0.0)); } else if(e->button()==Qt::MiddleButton) { QMessageBox msg; msg.setText("Middle Mouse pressed"); msg.exec(); } else return; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //This is my ViewerWidget class class ViewerWidget : public QWidget, public osgViewer::CompositeViewer { Q_OBJECT public: ViewerWidget(osgViewer::ViewerBase::ThreadingModel threadingModel=osgViewer::CompositeViewer::SingleThreaded, osg::Group* scene=NULL); osgQt::GLWidget* addViewWidget( osg::Camera* camera, osg::Group* scene ); osg::Camera* createCamera( int x, int y, int w, int h, const std::string& name="", bool windowDecoration=false ); virtual void paintEvent( QPaintEvent* event ); osgViewer::View* getView(); protected: QTimer _timer; osgQt::GraphicsWindowQt* gw; CSGraphicsView* gView; osgViewer::View* view; }; #endif // VIEWERWIDGET_H //viewerwidget.cpp ViewerWidget::ViewerWidget(osgViewer::ViewerBase::ThreadingModel threadingModel, osg::Group* scene) : QWidget() { setThreadingModel(threadingModel); gView = (CSGraphicsView*) (addViewWidget( createCamera(0,0,100,100), scene )); QGridLayout* grid = new QGridLayout; grid->addWidget( gView, 0, 0 ); setLayout( grid ); connect( &_timer, SIGNAL(timeout()), this, SLOT(update()) ); _timer.start( 10 ); } osgQt::GLWidget* ViewerWidget::addViewWidget( osg::Camera* camera, osg::Group* scene ) { view = new osgViewer::View; view->setCamera( camera ); addView( view ); view->setSceneData( scene ); view->addEventHandler( new osgViewer::StatsHandler ); view->setCameraManipulator( new osgGA::TrackballManipulator ); osg::ref_ptr<osgGA::StateSetManipulator> statesetManipulator = new osgGA::StateSetManipulator(view->getCamera()->getStateSet()); view->addEventHandler(statesetManipulator.get()); gw = dynamic_cast<osgQt::GraphicsWindowQt*> ( camera->getGraphicsContext() ); return gw ? gw->getGLWidget() : NULL; } osg::Camera* ViewerWidget::createCamera( int x, int y, int w, int h, const std::string& name, bool windowDecoration ) { gView = new CSGraphicsView(this); gView->setGeometry(x, y, w, h); osg::DisplaySettings* ds = osg::DisplaySettings::instance().get(); osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits; traits->inheritedWindowData = new osgQt::GraphicsWindowQt::WindowData( gView ); traits->windowName = name; traits->windowDecoration = windowDecoration; traits->x = x; traits->y = y; traits->width = w; traits->height = h; traits->doubleBuffer = true; traits->alpha = ds->getMinimumNumAlphaBits(); traits->stencil = ds->getMinimumNumStencilBits(); traits->sampleBuffers = ds->getMultiSamples(); traits->samples = ds->getNumMultiSamples(); osg::ref_ptr<osg::Camera> camera = new osg::Camera; camera->setGraphicsContext( new osgQt::GraphicsWindowQt(traits.get()) ); camera->setClearColor( osg::Vec4(0.2, 0.2, 0.6, 1.0) ); camera->setViewport( new osg::Viewport(0, 0, traits->width, traits->height) ); camera->setProjectionMatrixAsPerspective( 30.0f, static_cast<double>(traits->width)/static_cast<double>(traits->height), 1.0f, 10000.0f ); return camera.release(); } void ViewerWidget::paintEvent( QPaintEvent* event ) { frame(); } osgViewer::View* ViewerWidget::getView() { return view; } [/code] Please tell me why is it not moving ??.....I want to implement a rotate functionality on right mouse press button, a pan function on middle mouse press function and a zoom function on wheel event. Any help is highly appreciated. Thanks Sujan -- Thanks & Regards Sujan
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org