我們現在來看看之前提出的需求:
如果你直接這樣做:
|
1
2
3
4
5
|
QScrollArea *pScroll =
new
pScroll;
OgreWidget *pOgreWidget =
new
OgreWidget(pScroll );
pScroll->setWidget(pOgreWidget );
|
你會發現有問題,Ogre已經不再渲染到Qt了,滾動條可以看見並且可用狀態,但是Ogre沒了.
如果你這樣做:
|
1
2
3
|
QScrollArea *pScroll =
new
pScroll;
OgreWidget *pOgreWidget =
new
OgreWidget(pScroll );
|
你可以看到Ogre已經渲染到了QScrollArea的區域裡面,但是QScrollArea卻不能正常工作了,滾動條消失了,即使通過
|
1
|
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn)
|
這樣的方法強制打開滾動條,發現滾動條雖然可以看見了,但是不可用灰色狀態.
那麼該怎麼辦呢?這個問題困擾了幾十分鐘之後,終於想到了方法。我們僅僅只需要一個QWidget來過度即可.
像這樣:
|
1
2
3
4
5
6
7
|
QWidget *pRenderWidget =
new
QWidget;
OgreWidget *pOgreWidget =
new
OgreWidget(pRenderWidget );
QScrollArea *pScroll =
new
pScroll;
pScroll->setWidget(pRenderWidget );
|
然後我們再設定一下OgreWidget的固定大小值,然後就解決了文章提出的兩個需求.
文章探讨了在使用Qt的QScrollArea与Ogre3D渲染引擎时遇到的问题,并提供了解决方案。通过引入一个过渡QWidget,确保了Ogre3D在滚动区域内正常渲染同时保持Qt滚动条的可用性。
1114

被折叠的 条评论
为什么被折叠?



