也许这可以帮助:
Ogre::String winHandle;
#ifdef WIN32
// Windows code
winHandle += Ogre::StringConverter::toString((unsigned long)(this->parentWidget()->winId()));
#else
// Unix code
QX11Info info = x11Info();
winHandle = Ogre::StringConverter::toString((unsigned long)(info.display()));
winHandle += ":";
winHandle += Ogre::StringConverter::toString((unsigned int)(info.screen()));
winHandle += ":";
winHandle += Ogre::StringConverter::toString((unsigned long)(this->parentWidget()->winId()));
#endif
Ogre::NameValuePairList params;
params["parentWindowHandle"] = winHandle;
mOgreWindow = mOgreRoot->createRenderWindow( "QOgreWidget_RenderWindow",
this->width(),
this->height(),
false,
¶ms );
QX11Info 是 Qt 类,用于获取句柄。句柄被插入到 Ogre::NameValuePairList 作为 name:"parentWindowHandle" 值:你的句柄和十作为参数发送到 OgreRoot::createRenderWindow()。我用 Qt 尝试了这段代码,它奏效了。如果它不起作用,请尝试使用 externalWindowHandle 作为参数名称。
来源:http ://www.ogre3d.org/tikiwiki/QtOgre