在我的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键按下事件。我该怎么做才能让它发挥作用?
答案 0 :(得分:1)
“SHIFT”键是一个修饰键。
当你要求按SHIFT键时,你的event->text()
会返回一个空字符串。
尝试以下方式处理SHIFT键...
if (event->modifiers() == Qt::ShiftModifier)
{
//SET SHIFT KEY TO OPENSCENEGRAPH
}