Posted on 2008-12-03 21:27
美洲豹 阅读(551)
评论(0) 编辑 收藏 引用
继续接着将其嵌入到窗口里面.嵌入的关键是利用QWidget.winId(),将NameValuePairList中的'externalWindowHandle'值设为要嵌入窗口的Handle,
这样则可以嵌入了
结合QtDesigner与pyuic4将界面导出成Ui_MainWindow.py,而后继承一个MainWindow类,在这个基础上将ui包含进来,将界面与代码分离,则可以继续往下写。现在的效果如下,弄了好久,不知道,窗口的大小为什么不能调.
![](http://www.cppblog.com/images/cppblog_com/dreamwaylai/ogreview_embedded_small_error.jpg)
为什么只显示一部分呢?改变frame的大小也没有作用。
后来,改了一下,将在初始化OgreView的时候,将窗口id的string传入到其中作为参数。最后可以显示如下的图片。但仍不能达到效果,需要再改一下。
![](http://www.cppblog.com/images/cppblog_com/dreamwaylai/ogreview_embedded_small_error2.jpg)
后来通过跟踪之后,发现是在resizeEvent中event中传入的size().width(),size().height()的值是100,30,过小,并且将原来在setupViewport中改用getActualWidth(),getActualHeight()等来做。
self.mCamera.setAspectRatio(float(self.mViewport.getActualWidth())/float(self.mViewport.getActualHeight()) )
现在,需要做的是将resizeEvent中的值改掉。查一下它那里是出了什么问题。
下图是去除了resizeEvent的情况.
![](http://www.cppblog.com/images/cppblog_com/dreamwaylai/ogreview_embedded_small_error_without_resizeEvent.jpg)
现在可以算是有个初始的可显示的版本。
TODO但是resizeEvent迟早要搞定,因为后面对窗口缩放的时候必然会改变窗口的大小。
现在还暂时不知道PyQt4中的resizeEvent中为什么其event得到的size()不是窗口的大小,而是一个很小的值,就像第一张图片一样,现在还暂时
不知道如何更正这个错误。