利用osgQOpenGLWidget将osgEarth嵌入Qt窗口界面时键盘无响应

  • Post author:
  • Post category:其他


在利用osgQOpenGLWidget将osg嵌入到Qt界面进行显示时,出现一个奇怪的现象。

在窗口内,鼠标正常,但是键盘无响应。打印输出看了一下。确定是就没有响应。

        if(ea.getEventType()!=ea.FRAME)
            qDebug()<<ea.getEventType();



(一)原因分析

后来发现,是因为osgQOpenGLWidget的窗口插件默认状态下,他的Focus策略是

noFocus

,所以键盘不会将焦点集中到这个插件里,因此对键盘不会有响应。



(二)解决方案

因此解决的方法有两种,根据不同的使用osgQOpenGLWidget插件的方法,有不同的解决方案,但实质是一样的。

  1. 如果是在Qt的设计里,直接拖的

    OpenGL Widget

    ,然后提升为osgQOpenGLWidget,那样的画,直接在可视化界面中的

    focusPolicy

    中修改为

    StrongFocus

    即可,如下图。

    在这里插入图片描述

  2. 如果是新建一个类,继承了osgQOpenGLWidget,那样直接在该类中,

    this->setFocusPolicy(Qt::StrongFocus);

    即可。



版权声明:本文为baidu_31788709原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。