• 8360阅读
  • 1回复

Ogre和Qt结合的问题 [复制链接]

上一主题 下一主题
离线玉清
 
只看楼主 倒序阅读 楼主  发表于: 2010-08-12
我用Qt和OGRE结合,打算把Ogre Render Window作为一个QWidget挂载到Qt上面去.

弄了一个类:
OgreView::OgreView(QWidget* parent ): QWidget(parent,Qt::WFlags(Qt::MSWindowsOwnDC))

里面的    void timerEvent(QTimerEvent* evt);和
    void paintEvent(QPaintEvent* evt);等等这些是自动调用的吗?

另外,我通过这样添加进Qt之后:
    QWidget widget ;
    widget.setGeometry (10,10,640,480) ;

    OgreView ogreWidget(&widget) ;
    ogreWidget.setGeometry (10,10,320,240) ;
    ogreWidget.setupView();


    QVBoxLayout *layout = new QVBoxLayout ;

    layout->addWidget(&ogreWidget);
    widget.setLayout(layout);
    widget.show() ;

发现执行完这里就会去执行OgreView的析构函数了,随后显示出ui的主窗口,可是我并没有发布任何的Ogre退出命令,ogre.log里面的也没有显示任何的Ogre的异常,请问这是为什么呢?
[ 此帖被玉清在2010-08-12 17:11重新编辑 ]
离线thw_king
只看该作者 1楼 发表于: 2011-05-26
QWidget widget ;
OgreView ogreWidget(&widget) ;
不要直接这样写, 需要new,  否则,show后,退出函数时,这两个类就自动析构了。。
改成: widget = new QWidget; ogreWidget = new OgreView(widget )
其他地发也相应的改用指针。。
快速回复
限100 字节
 
上一个 下一个