如何将qt key press事件翻译成osg事件?

时间:2017-12-07 21:17:38

标签: qt openscenegraph

在我的osg Eventhandler中,我有以下代码

if(ea.getModKeyMask() & osgGA::GUIEventAdapter::MODKEY_SHIFT){
   do something
}

ea是osgGA::GUIEventAdapter。在osgwidget中,按键事件由

处理
void OSGWidget::keyPressEvent(QKeyEvent *event)
{
QString keyString = event->text();
const char *keyData = keyString.toLocal8Bit().data();
this->getEventQueue()->keyPress(osgGA::GUIEventAdapter::KeySymbol(*keyData));
}

然而,当我运行我的代码时,似乎osgGA :: GUIEventAdapter无法捕获shift键按下事件。我该怎么做才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

“SHIFT”键是一个修饰键。

当你要求按SHIFT键时,你的event->text()会返回一个空字符串。

尝试以下方式处理SHIFT键...

if (event->modifiers() == Qt::ShiftModifier)
{
    //SET SHIFT KEY TO OPENSCENEGRAPH
}