• 7069阅读
  • 5回复

讲3D图形渲染放到QWidget,然后这个QWidget再放到QScrollArea里 [复制链接]

上一主题 下一主题
离线玉清
 
只看楼主 倒序阅读 楼主  发表于: 2011-08-05
我使用Ogre作为图形渲染,在CreateRenderWindow时传入了当前Widget的句柄,这样Ogre就会渲染到这个Widget上面去.


但是我想固定住这个Widget渲染区域的大小,渲染区域有可能比荧幕大也有可能比荧幕小.


渲染区域的长度可能超过荧幕的长度,所以就想把这个这个QWidget放到QScrollArea里面,通过滑块浏览全部的渲染.


如果是这样:
QScrollArea *pScroll = new QScrollArea;
OgreWidget *pOgre = new OgreWidget(pScroll );


然后不调用QScrollArea::setWidget方法是可以将Ogre渲染到QScrollArea里面的,但是滚动条不能显示,即使我通过setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn)这样的方法强制打开滚动条之后,滚动条也是灰色不可用状态.


当我使用QScrollArea::setWidget(pOgre )时,是可以出现滚动条,但是并不能够渲染.


求助..
离线玉清
只看该作者 1楼 发表于: 2011-08-05
搞定~~~~~~~~~~~~~~~~
离线zhaoyi4374

只看该作者 2楼 发表于: 2011-08-05
也不说说怎么搞定的
离线玉清
只看该作者 3楼 发表于: 2011-08-05
只要将OgreWidget再包装一层到QWidget,然后
QScrollArea->set外部的那个QWidget即可~

详细:http://www.ispinel.com/2011/08/05/1932
离线tornadory

只看该作者 4楼 发表于: 2012-01-30
    多谢 好像有用
离线kimtaikee

只看该作者 5楼 发表于: 2012-01-30
楼主的办法实为强扭的瓜不甜,你强硬地把VerticalScrollBar 和 HorizontalScrollBar显示出来是没有任何意义的,要想将此两bar显示出来要自己设定QScrollArea中设定Widget的Size, Size.width() > viewport 的宽才会显示HorizontalScrollBar , 同理也可应用于VerticalScrollBar .

快速回复
限100 字节
 
上一个 下一个