在利用osgQOpenGLWidget将osg嵌入到Qt界面进行显示时,出现一个奇怪的现象。
在窗口内,鼠标正常,但是键盘无响应。打印输出看了一下。确定是就没有响应。
if(ea.getEventType()!=ea.FRAME)
qDebug()<<ea.getEventType();
(一)原因分析
后来发现,是因为osgQOpenGLWidget的窗口插件默认状态下,他的Focus策略是
noFocus
,所以键盘不会将焦点集中到这个插件里,因此对键盘不会有响应。
(二)解决方案
因此解决的方法有两种,根据不同的使用osgQOpenGLWidget插件的方法,有不同的解决方案,但实质是一样的。
-
如果是在Qt的设计里,直接拖的
OpenGL Widget
,然后提升为osgQOpenGLWidget,那样的画,直接在可视化界面中的
focusPolicy
中修改为
StrongFocus
即可,如下图。
-
如果是新建一个类,继承了osgQOpenGLWidget,那样直接在该类中,
this->setFocusPolicy(Qt::StrongFocus);
即可。
版权声明:本文为baidu_31788709原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。