2017-12-07 5 views
0

In meinem osg Eventhandler, ich habe den folgenden CodeWie übersetzt man qt key presse event zu osg event?

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

ea die osgGA::GUIEventAdapter ist. Im osgwidget wird das KeyPress-Ereignis von

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

Allerdings, wenn ich meinen Code ausführen, so scheint es, die osgGA :: GUIEventAdapter kann das Shift-Taste drückt Ereignis nicht erfassen. Was soll ich tun, damit es funktioniert?

Antwort

1

"SHIFT" -Taste ist eine Zusatztaste.

Und Ihre event->text() gibt einen leeren String zurück, wenn Sie nach SHIFT-Taste fragen drücken.

unten Versuchen Sie die Art und Weise SHIFT-Taste zu handhaben ...

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