1

アプリケーションを Qt4 から Qt5 に移植しています。

私の知る限り、Qt5 は Xlib イベントの処理をサポートしておらず、XCB イベントを使用しています (イベント ハンドラーはxcb_generic_event_tオブジェクトを取得します)。ただしspnav、私が使用しているライブラリは X11 イベントのみをサポートしています (XEventオブジェクトを解析して必要な情報を取得します)。Qt5でX11イベントを処理したり、変換xcb_generic_event_tしたりすることは可能XEventですか?

Qt4 コードでは次のようになります。

bool MyApplication::x11EventFilter(XEvent *event) 
{
    spnav_event sev;
    spnav_x11_event(event,&sev);

    if(sev.type == SPNAV_EVENT_MOTION) 
    {
           emit joystickPositionEvent(sev.motion.x,sev.motion.y,sev.motion.z,sev.motion.rx,sev.motion.ry,sev.motion.rz);
    } 
    else if(sev.type == SPNAV_EVENT_BUTTON)
    {   
        emit joystickButtonEvent(sev.button.bnum,sev.button.press!=0);
    }

    return false;   
}
4

1 に答える 1