Hi Skylark
Skylark wrote:
>
> You have to use osgViewer::InteractiveImageHandler in order for your
> QWidgetImage to get events and forward them to the underlying Qt
> widgets. See the osgQtWidgets example for guidance.
>
I do it, I'm using osgQtWidgets example as base code...
Code:
osg::ref_ptr<osgQt::QWebViewImage> image = new osgQt::QWebViewImage();
if (arguments.argc()>1) image->navigateTo((arguments[1]));
else image->navigateTo("http://www.youtube.com/");
osgWidget::GeometryHints hints(osg::Vec3(0.0f,0.0f,0.0f),
osg::Vec3(1.0f,0.0f,0.0f),
osg::Vec3(0.0f,0.0f,1.0f),
osg::Vec4(1.0f,1.0f,1.0f,1.0f),
osgWidget::GeometryHints::RESIZE_HEIGHT_TO_MAINTAINCE_ASPECT_RATIO);
osg::ref_ptr<osgWidget::Browser> browser = new osgWidget::Browser;
browser->assign(image.get(), hints);
root->addChild(browser.get());
QWidget* widget = new QWidget;
widget->setLayout(new QVBoxLayout);
MyAdressWidget* adressWidget = new MyAdressWidget(new
QWidget(),"Refresh",image);
widget->layout()->addWidget(adressWidget);
QGraphicsScene* graphicsScene = 0;
osg::ref_ptr<osgQt::QWidgetImage> widgetImage = new
osgQt::QWidgetImage(widget);
widgetImage->getQWidget()->setAttribute(Qt::WA_TranslucentBackground);
widgetImage->getQGraphicsViewAdapter()->setBackgroundColor(QColor(0, 0, 0, 0));
widgetImage->getQGraphicsViewAdapter()->resize(800, 800);
graphicsScene =
widgetImage->getQGraphicsViewAdapter()->getQGraphicsScene();
osg::Camera* camera = 0; // Will stay NULL in the inScene
case.
osg::Geometry* quad =
osg::createTexturedQuadGeometry(osg::Vec3(0,0,0), osg::Vec3(1,0,0),
osg::Vec3(0,1,0), 1, 1);
osg::Geode* geode = new osg::Geode;
geode->addDrawable(quad);
osg::MatrixTransform* mt = new osg::MatrixTransform;
osg::Matrix mat(osg::Matrix::rotate(osg::Vec3(0,1,0),
osg::Vec3(0,0,1)));
mat.postMultTranslate(osg::Vec3f(0.0,0.0,0.3));
mt->setMatrix(mat);
mt->addChild(geode);
mt->getOrCreateStateSet()->setMode(GL_LIGHTING,
osg::StateAttribute::OFF);
mt->getOrCreateStateSet()->setMode(GL_BLEND,
osg::StateAttribute::ON);
mt->getOrCreateStateSet()->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
mt->getOrCreateStateSet()->setAttribute(new osg::Program);
osg::Texture2D* texture = new osg::Texture2D(widgetImage.get());
texture->setResizeNonPowerOfTwoHint(false);
texture->setFilter(osg::Texture::MIN_FILTER,osg::Texture::LINEAR);
texture->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE);
texture->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE);
mt->getOrCreateStateSet()->setTextureAttributeAndModes(0, texture,
osg::StateAttribute::ON);
osg::Group* overlay = new osg::Group;
overlay->addChild(mt);
root->addChild(overlay);
osgViewer::InteractiveImageHandler* handler = new
osgViewer::InteractiveImageHandler(widgetImage.get(), texture, camera);
quad->setEventCallback(handler);
quad->setCullCallback(handler);
[Image: http://img101.imageshack.us/img101/177/qtinosg.jpg ]
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=34878#34878
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org