我們現在來看看之前提出的需求:
如果你直接這樣做:
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的固定大小值,然後就解決了文章提出的兩個需求.