【发布时间】:2014-09-19 06:08:36
【问题描述】:
我正在尝试使用以下代码将 Ogre 嵌入 Qt: https://github.com/gklingler/QOgreWidget
它在我的系统上运行良好,没有任何问题,但是当我尝试在我的 Qt 应用程序中添加它时,我收到以下错误:
SceneManagerFactory for type 'PCZSceneManager' registered.
MovableObjectFactory for type 'PCZLight' registered.
MovableObjectFactory for type 'Portal' registered.
MovableObjectFactory for type 'AntiPortal' registered.
PCZone Factory Type 'ZoneType_Octree' registered
SceneManagerFactory for type 'OctreeSceneManager' registered.
app: ../app/ogre/ogrebasewidget.cpp:45: OgreBaseWidget::OgreBaseWidget(Ogre::Root*, OgreEventHandler*, QWidget*): Assertion `ogreWinId' failed.
The program has unexpectedly finished.
错误指向这段代码sn-p:
Ogre::String winHandle;
winHandle = Ogre::StringConverter::toString((unsigned long) (QX11Info::display()));
winHandle += " : ";
winHandle = Ogre::StringConverter::toString((unsigned long) (QX11Info::appScreen()));
winHandle += " : ";
winHandle = Ogre::StringConverter::toString((unsigned long) (winId()));
Ogre::NameValuePairList params;
params["parentWindowHandle"] = winHandle;
params["FSAA"] = Ogre::String("8");
int w = width();
int h = height();
mOgreRenderWindow = mOgreRoot->createRenderWindow("OgreWidget_RenderWindow",
qMax(w, 640),
qMax(h, 480),
false, ¶ms);
mOgreRenderWindow->setActive(true);
mOgreRenderWindow->setVisible(true);
WId ogreWinId = 0x0;
mOgreRenderWindow->getCustomAttribute("WINDOW", &ogreWinId);
assert(ogreWinId);
QWidget::create(ogreWinId);
setAttribute(Qt::WA_OpaquePaintEvent);
我在标题中包含了<cassert>。帮我解决这个问题。 :(
【问题讨论】:
-
我想尽快解决。我不认为在不同的论坛寻求帮助是个问题。
-
是的,但请下次说清楚,如下所述:meta.stackoverflow.com/a/266159/1947205